我不得不在服务中呼叫控制器。以这种方式,我创建了connstruct函数并添加参数EntityMenager
class UsersController extends Controller
{
private $em;
public function __construct(EntityManager $em) {
$this->em = $em;
}
并为该控制器定义了服务
services:
user_controller:
class: AppBundle\Controller\UsersController
arguments:
['@doctrine.orm.entity_manager']
当我打电话给那个服务时
$usersContainer = $this->get('user_controller');
在其他控制器中一切都很好。
但是当我打电话给自我控制器时我得到错误
Catchable Fatal Error:
Argument 1 passed to AppBundle\Controller\UsersController::__construct()
must be an instance of Doctrine\ORM\EntityManager, none given,
我犯错的地方?
答案 0 :(得分:1)
我只是做丑陋的黑客并在此刻解决问题。
我删除了__construc类,并将EntityManager作为需要的参数添加到需要EntityManager类的函数中。
public function getLoggedUserData($loggedUserId, $entityManager)
{
$user = $entityManager->getRepository('...')
$newRequests = $entityManager->getRepository('...')
答案 1 :(得分:1)
如果Controller是一个简单的类(不扩展Controller),则只能将Controller定义为服务。
请参阅:http://symfony.com/doc/current/cookbook/controller/service.html