Symfony2“致命错误:在控制器中调用服务时调用非对象中的成员函数get()”

时间:2014-09-29 14:25:18

标签: symfony service controller

我有两个使用相同服务的控制器:

CONTROLLER 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);

         }

    }

CONTROLLER 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]

问题在于,在第一个控制器中没有错误,在第二个控制器中我得到错误:

致命错误:在C:\ Users \ d.test \ workspace \ test \ vendor \ symfony \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \中的非对象上调用成员函数get()第274行的Controller \ Controller.php

有什么想法吗?

1 个答案:

答案 0 :(得分: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);

  }

}