this example을 따라 Symfony 2.1.0-DEV를 실행하는 프로젝트에서 softdeletable
확장을 테스트했습니다. 리스너 "SoftDeleteableListener"가 EventManager에 추가되지 않았습니다.
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
mappings:
translatable:
type: annotation
alias: Gedmo
prefix: Gedmo\Translatable\Entity
# make sure vendor library location is correct
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
loggable:
type: annotation
alias: Gedmo
prefix: Gedmo\Loggable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity"
tree:
type: annotation
alias: Gedmo
prefix: Gedmo\Tree\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
내 컨트롤러 액션 : 일부 후 Listener "SoftDeleteableListener" was not added to the EventManager!
: 나는이 코드를 실행하면
/**
* @Route("/del", name="del_article")
*/
public function delAction() {
$em = $this->getDoctrine()->getEntityManager();
$article = $em->find('Article', 3);
$em->remove($article);
$em->flush();
die('ok');
}
, 그것은 항상 예외를 보여 디버깅 시간을 보냈다. 클래스 SoftDeleteableFilter
의 기능은 getListener()
:
protected function getListener()
{
if ($this->listener === null) {
$em = $this->getEntityManager();
$evm = $em->getEventManager();
foreach ($evm->getListeners() as $listeners) {
foreach ($listeners as $listener) {
if ($listener instanceof SoftDeleteableListener) {
$this->listener = $listener;
break 2;
}
}
}
if ($this->listener === null) {
throw new \RuntimeException('Listener "SoftDeleteableListener" was not added to the EventManager!');
}
}
return $this->listener;
}
그러나 $listeners
속성은 더 SoftDeleteableListener
항목이 없습니다, 그러나 같은
- Gedmo \ 트리 \ TreeListener
- Gedmo \ 정렬 가능한 \ SortableListener
- Gedmo \ Sluggable \ SluggableListener 다른 청취자를 가지고
- Gedmo \ Loggable \ LoggableListener
- Gedmo \ Timestampable \ TimestampableListener
- Gedmo \ 번역 가능한 \ TranslatableListener loadClassMetadata에서 생성 된
.
services:
extension.listener:
class: Infinitz\UserBundle\Listener\DoctrineExtensionListener
calls:
- [ setContainer, [ @service_container ] ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onLateKernelRequest, priority: -10 }
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
gedmo.listener.tree:
class: Gedmo\Tree\TreeListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
gedmo.listener.translatable:
class: Gedmo\Translatable\TranslatableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setDefaultLocale, [ %locale% ] ]
- [ setTranslationFallback, [ false ] ]
gedmo.listener.timestampable:
class: Gedmo\Timestampable\TimestampableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
gedmo.listener.sluggable:
class: Gedmo\Sluggable\SluggableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
gedmo.listener.sortable:
class: Gedmo\Sortable\SortableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
gedmo.listener.loggable:
class: Gedmo\Loggable\LoggableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
그래서 나는 다음을 추가하려고 : 나는 내 doctrine_extensions.yml 서비스 리스너에서 생성 할 수 있습니다 생각
gedmo.listener.softdeleteable:
class: Gedmo\SoftDeleteable\SoftDeleteableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
을하지만 여전히 Listener "SoftDeleteableListener" was not added to the EventManager!
은 내가 리스너를 추가해야합니까 보여줍니다 어떤 SoftDeleteableListener의 인스턴스? 내 부주의 미안
GitHub의 문제에 링크가 더 이상 – mandark
가 @mandark 내가 가진"예약 된 표시를 catch되지 않은 심포니 \ 구성 요소 \ YAML \ 예외 \의 ParseException가 " – aur1mas
업데이트 작동하지 않습니다 YML는 softdelete 수신기를 활성화합니다 일반 스칼라, 당신은 스칼라를 인용해야합니다. "라고 인용해야했습니다 : ["@annotation_reader "] –