में जोड़ा नहीं गया था, मैंने this example का पालन किया है ताकि softdeletable
एक्सटेंशन को मेरे प्रोजेक्ट सिम्फनी 2.1.0-DEV पर चलने के लिए परीक्षण किया जा सके।श्रोता "सॉफ़्टडिलेटेबल लिस्टर" को इवेंट मैनेजर
मैं नीचे की तरह मेरे config.yml कॉन्फ़िगर किया गया:
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 से उत्पन्न होते हैं। मुझे लगता है कि यह मेरे doctrine_extensions.yml सेवा श्रोता से उत्पन्न हो सकता है:
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 ] ]
तो मैं निम्नलिखित जोड़ने की कोशिश की:
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!
मैं एक श्रोता जोड़ने की आवश्यकता है सॉफ़्टडिलेटेबल लिस्टर का कौन सा उदाहरण?
GitHub मुद्दे के लिए लिंक काम नहीं करता है अब और – mandark
@mandark अद्यतन – aur1mas
मैं "Uncaught Symfony \ घटक \ YAML \ अपवाद \ ParseException: आरक्षित सूचक" मिल गया @ "एक प्रारंभ नहीं कर सकता सादा स्केलर; आपको स्केलर को उद्धृत करने की आवश्यकता है ", मुझे उद्धरण देना था: [" @annotation_reader "] –