2014-09-29 29 views
0

呼叫服務我有2個控制器,使用一個相同的服務:Symfony2的「致命錯誤:調用一個成員函數的get()在非對象上。」當控制器

控制器1

namespace MO\FrontendBundle\Controller; 
    use MO\FrontendBundle\Controller\SuperClass\MOSearchController; 
    use Symfony\Component\HttpFoundation\JsonResponse; 

    class ResultsController extends MOSearchController { 

     public function detailAction() { 

       $vm = $this->get("vehicles_manager"); // SERVICE IN QUESTION 

       $result = $vm->getVehicleDetail($idVehicle); 

     } 

    } 

控制器2

namespace MO\FrontendBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class MetatagsController extends Controller { 

    public function metatagsController() { 

      $vm = $this->get("vehicles_manager"); // SERVICE IN QUESTION 

      $result = $vm->getVehicleDetail($idVehicle); 

    } 

} 

該服務定期services.yml文件中聲明:

services: 
    vehicles_manager: 
     class: MO\FrontendBundle\Service\VehiclesManager 
     arguments: [@logger, %vehicles_manager.endpoint%, %vehicles_manager.scope%, %vehicles_manager.consumer%, %form_values.manual_gear_code%] 
     tags: 
      - { name: monolog.logger, channel: solrws } 

    vehicles_memory: 
     class: MO\FrontendBundle\Service\VehiclesMemory 
     arguments: [@request_stack] 

的問題是,雖然在第一控制器沒有錯誤,在第二i得到錯誤:

致命錯誤:調用一個成員函數的get()在C語言的非對象: \ Users \ d.test \ workspace \ test \ vendor \ symfony \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller.php on line 274

任何想法?

+0

也許這可能是有用的:http://stackoverflow.com/questions/12905191/call-to-a-member-function-get-on-a-非對象 – nowiko 2014-09-29 14:39:19

+0

你可以發佈你的路線?它幾乎看起來像你試圖將你的第二個控制器定義爲服務,但忘記注入容器?框架控制器中第274行的代碼是什麼? – Cerad 2014-09-29 14:51:15

回答

1

在您的第二個控制器中,您沒有爲Action添加方法名稱,那麼它並不是真正的終點。 你的第二個控制器代碼應該是:

namespace MO\FrontendBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class MetatagsController extends Controller { 

    public function metatagsAction() { 

     $vm = $this->get("vehicles_manager"); // SERVICE IN QUESTION 

     $result = $vm->getVehicleDetail($idVehicle); 

    } 

} 
相關問題