Symfony と Sonata を使用して管理インターフェイスを作成しました。今のところ、すべてが正常に機能しています。
ここで、このチュートリアルに従って、フックがどのように機能するかをテストしたいと思います: http://sonata-project.org/bundles/admin/master/doc/reference/ Saving_hooks.htmlこの方法は機能します。私がやりたいことは、管理インターフェイスを介してオブジェクトを作成するすべてをログに記録することです。これが私のAdminClassコードの最初の部分です(動作中):
namespace AAA\AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
class CompteAdmin extends Admin
{
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('prenom')
->add('nom')
->add('fonction')
;
}
そして、ここに次の部分があります(機能していません):
public function postPersist($logger)
{
$logger = $this->get('logger');
$logger->err('Une erreur est survenue');
}
オブジェクトを追加しようとすると、次のログ エラーが発生します。
PHP Fatal error: Call to undefined method INERIS\AdminBundle\Admin\CompteAdmin::get()
また
PHP Fatal error: Call to undefined method INERIS\AdminBundle\Entity\Compte::err()
行にコメントするかどうかによって異なります。
ログに書き込むために、Symfony は Monolog を使用します。私はこのチュートリアルhttp://symfony.com/doc/current/cookbook/logging/monolog.htmlに従いましたが、 $logger はそこではなくコントローラーに宣言する必要があるため、明らかに間違っています。
そのときの解き方がわかりません。
モノログを有効にするために、AdminClass の先頭に追加が欠落している可能性があります。私の関数 postPersist が間違ったオブジェクトを取ったのかもしれません。
どんなヒントも役に立ちます;)
編集:解決しました。以下の投稿を確認してください。