我有两个使用相同服务的控制器:
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
有什么想法吗?
答案 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);
}
}