2014-11-24 1 views
0

Symfony2 프로젝트가 있는데 Gedmo의 Loggable 확장에 문제가 있습니다.Symfony2 Gedmo Loggable이 플러시 콜에서 충돌합니다.

나는, 건설 제대로 제출되고있는 양식을 가지고 검증을 통과, 아직 $EntityManager->flush()이 데이터베이스 (교리와 MySQL을)에 양식 데이터를 추가하기 위해 호출 될 때, 나는 다음과 같은 얻을 :

FatalErrorException: Error: Call to undefined method Path\To\My\Entity\Class::setAction() 
in /path/to/vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/LoggableListener.php line 225 

at ErrorHandler->handleFatal() in /path/to/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php line 0 
at LoggableListener->createLogEntry() in /path/to/vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/LoggableListener.php line 188 
at LoggableListener->onFlush() in /path/to/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php line 61 
at ContainerAwareEventManager->dispatchEvent() in /path/to/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 306 
at UnitOfWork->commit() in /path/to/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php line 355 
at EntityManager->flush() in /Path/To/My/Bundle/Controller.php line 364 
at Controller->addEntityAction() in /Path/To/app/bootstrap.php.cache line 2891 
at ??call_user_func_array() in /Path/To/app/bootstrap.php.cache line 2891 
at HttpKernel->handleRaw() in /Path/To/app/bootstrap.php.cache line 2865 
at HttpKernel->handle() in /Path/To/app/bootstrap.php.cache line 2994 
at ContainerAwareHttpKernel->handle() in /Path/To/app/bootstrap.php.cache line 2274 
at Kernel->handle() in /Path/To/web/app_dev.php line 28 
at ??{main}() in /Path/To/web/app_dev.php line 0 

foreach ($ea->getScheduledObjectInsertions($uow) as $object) { 
     $this->createLogEntry(self::ACTION_CREATE, $object, $ea); 
    } 

라인 188에 foreach 주변 전체 함수이다 :

LoggableListner.php 라인 (188)은

012,317,365 즉,

 /** @var \Gedmo\Loggable\Entity\LogEntry $logEntry */ 
     $logEntry = $logEntryMeta->newInstance(); 

내 실체가 Loggable에 대한 표준 Symfony2 주석이 있습니다 :

LoggableListner.php 라인 (225)은

use Gedmo\Mapping\Annotation as Gedmo; 

/** 
* @Gedmo\Loggable(logEntryClass="My\Bundles\ThisBundle\ThisEntity") 
*/ 

/** 
* @ORM\Column(type="string", length=30, nullable=false) 
* @Assert\Length(max=30) 
* @Gedmo\Versioned 
*/ 
protected $name; 

그리고 나는 setAction() 통화에서 오는 아무 생각이 없습니다. 내 수업 시간에 아무것도라는 이름의 "행동"이 존재하지 않는다 아무 기능이나 방법이없는 등 getAction(), addAction(), removeAction() 등 (도 아니다 나의 이해에서이 있어야합니다.) 어떤 통찰력과 지원

감사합니다!

+0

누군가가 문제가 있으면 문제 해결에 대한 조언을 구합니다. –

답변

2

그래서 스택 추적을 신중하게 살펴본 후 Loggable 함수를 살펴보면 loggable 함수에서 오류가 발생했다는 것을 분명히 알았습니다. 이는 내 엔티티 중 하나에서 함수를 구현하려고 시도한 것입니다. 어딘가에 있어서는 안된다. (Loggable이 내 자신의 클래스와 함수를 사용하기를 원했기 때문에).

은 그래서 저는

/** 
* @Gedmo\Loggable(logEntryClass="My\Bundles\ThisBundle\ThisEntity") 
*/ 

변경에 그냥 로깅 및 수행하기 위해 자신의 클래스를 사용하는 의미

/** 
* @Gedmo\Loggable 
*/ 

- 짜잔합니다. 더 이상 오류가 없습니다.

관련 문제