2017-05-04 96 views
0

我遵循這個指南:https://nehalist.io/logging-events-to-database-in-symfony/事件記錄到數據庫中的Symfony

我做的所有步驟,除了第2步,因爲我並不需要這些信息。

錯誤:

Whoops, looks like something went wrong. 
1/1 ClassNotFoundException in CompanySubscriber.php line 19: Attempted to load class "CompanyEvent" from namespace "AppBundle\Events". 
Did you forget a "use" statement for another namespace? 

in CompanySubscriber.php line 19 
at CompanySubscriber::getSubscribedEvents() in classes.php line 3361 
at ContainerAwareEventDispatcher->addSubscriberService('appbundle.subscriber.company_subscriber', 'AppBundle\\EventSubscriber\\CompanySubscriber') 
at call_user_func_array(array(object(ContainerAwareEventDispatcher), 'addSubscriberService'), array('appbundle.subscriber.company_subscriber', 'AppBundle\\EventSubscriber\\CompanySubscriber')) in TraceableEventDispatcher.php line 227 
at TraceableEventDispatcher->__call('addSubscriberService', array('appbundle.subscriber.company_subscriber', 'AppBundle\\EventSubscriber\\CompanySubscriber')) in appDevDebugProjectContainer.php line 660 
at appDevDebugProjectContainer->getDebug_EventDispatcherService() in classes.php line 3090 
at Container->get('debug.event_dispatcher') in appDevDebugProjectContainer.php line 4175 
at appDevDebugProjectContainer->getSecurity_Authentication_ManagerService() in appDevDebugProjectContainer.php line 2554 
at appDevDebugProjectContainer->getSecurity_AuthorizationCheckerService() in classes.php line 3090 
at Container->get('security.authorization_checker', 2) in appDevDebugProjectContainer.php line 3596 
at appDevDebugProjectContainer->getTwigService() in classes.php line 3090 
at Container->get('twig') in appDevDebugProjectContainer.php line 501 
at appDevDebugProjectContainer->getCacheWarmerService() in classes.php line 3090 
at Container->get('cache_warmer') in Kernel.php line 499 
at Kernel->initializeContainer() in Kernel.php line 116 
at Kernel->boot() in Kernel.php line 165 
at Kernel->handle(object(Request)) in app_dev.php line 30 

services.yml

parameters: 
services: 
    monolog.db_handler: 
     class: AppBundle\Util\MonologDBHandler 
     arguments: ['@doctrine.orm.entity_manager'] 
    appbundle.subscriber.abstract_subscriber: 
     class: AppBundle\EventSubscriber\AbstractSubscriber 
     arguments: ['@service_container'] 

    appbundle.subscriber.company_subscriber: 
     class: AppBundle\EventSubscriber\CompanySubscriber 
     parent: appbundle.subscriber.abstract_subscriber 
     tags: 
      - { name: kernel.event_subscriber } 

CompanyEvent.php

<?php 

namespace AppBundle\Events; 

/** 
* Class CompanyEvent 
* @package AppBundle\Events 
*/ 
class CompanyEvent extends AbstractEvent 
{ 
    const COMPANY_ADDED = 'company_added'; 
} 

CompanySubscriber.php

<?php 

namespace AppBundle\EventSubscriber; 

use AppBundle\Events\CompanyEvent; 
use Symfony\Component\EventDispatcher\EventSubscriberInterface; 

/** 
* Class CompanySubscriber 
* @package AppBundle\EventSubscriber 
*/ 
class CompanySubscriber extends AbstractSubscriber implements EventSubscriberInterface 
{ 
    /** 
    * @return array 
    */ 
    public static function getSubscribedEvents() { 
     return [ 
      CompanyEvent::COMPANY_ADDED => 'onCompanyAdded', 
     ]; 
    } 

    /** 
    * @param CompanyEvent $event 
    */ 
    public function onCompanyAdded(CompanyEvent $event) { 
     $this->logEntity(CompanyEvent::COMPANY_ADDED, [ 
      'Company' => $event->getEntity()->getCompany() 
     ]); 
    } 

} 

我檢查過多次。所有拍打和命名空間都是正確的。我做錯了什麼?

+0

你可以添加你的作曲家json嗎?至少自動加載部分 –

+0

我認爲它與composer.json文件無關。 – NTsvetkov

回答

0

訂戶找到您的CompanySubscriber類並實例化它沒有問題,不會顯示爲作曲家問題。請查看AppBundle\Events的路徑,必須是../src/AppBundle/Events/CompanyEvent.php,查看文件名,大寫和小寫等。

+0

嗯。它變得陌生和陌生。我用名稱BozahEvent創建了一個新類,它工作。 P.s.我加倍,三重檢查了所有名字和路徑。他們都是正確的。 – NTsvetkov

0

對不起。

我雙重和三重檢查所有路徑,用途,類等,它沒有工作。

然後我更新了symfony(沒有注意到究竟是什麼更新),但它開始工作,所以問題關閉了。