相关疑难解决方法(0)

"调用一个成员函数has()来自Symfony 2 Controller的非对象

我收到了一个错误

Fatal error: Call to a member function has() on a non-object in /labs/Projects/What2Do/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 161

我不完全确定如何调试这个.错误发生在Symfony 2文件中,而不是我的...我的控制器如下所示.我在跑步indexAction

<?php
class ProjectsController extends Controller {

    /**
     * @var EntityManager 
     */
    protected $em;

    public function __construct() {
        $this->em = $this->getDoctrine()->getEntityManager();
    }

    /**
     * @Route("/")
     * @Route("/projects", name="listProjects")
     * @Template()
     */
    public function indexAction() {
        $projects = $this->em->getRepository(Project::NAME)->findAll();

        return array('projects' => $projects);
    }

    /**
     * @Route("/projects/{projId}", name="viewProject") 
     * @Template()
     */
    public function viewAction($projId) {
        // retrieve project
        $proj = $this->em->getRepository(Project::NAME)->findOneById($projId);
        if …
Run Code Online (Sandbox Code Playgroud)

symfony

7
推荐指数
1
解决办法
9560
查看次数

Symfony3控制器构造函数注入不起作用

我想使用以下代码将EntityManager实例传递给我的控制器的构造函数:

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\ORM\EntityManager;

class UserController extends Controller
{

    public function __construct( EntityManager $entityManager )
    {
        // do some stuff with the entityManager
    }
}
Run Code Online (Sandbox Code Playgroud)

我通过将参数放入service.yml文件来进行构造函数注入:

parameters:
#    parameter_name: value

services:
#    service_name:
#        class: AppBundle\Directory\ClassName
#        arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
    app.user_controller:
        class: AppBundle\Controller\UserController
        arguments: ['@doctrine.orm.entity_manager']
Run Code Online (Sandbox Code Playgroud)

service.yml包含在config.yml中,当我运行时

php bin/console debug:container app.user_controller

我明白了:

 Information for Service "app.user_controller"
 =============================================

 ------------------ ------------------------------------- 
  Option             Value                                
 ------------------ ------------------------------------- 
  Service ID         app.user_controller                  
  Class              AppBundle\Controller\UserController  
  Tags               -                                    
  Public             yes                                  
  Synthetic          no                                   
  Lazy               no                                   
  Shared …
Run Code Online (Sandbox Code Playgroud)

php symfony

6
推荐指数
1
解决办法
6059
查看次数

传递给控制器​​的参数必须是ContainerInterface的实例,给定appDevDebugProjectContainer的实例

为什么会出现此错误?

可捕获的致命错误:传递给Application \ Sonata \ ProductBundle \ Controller \ ProductAdminController :: __ construct()的参数1必须是ContainerInterface的实例,给定appDevDebugProjectContainer的实例

这是我的services.yml:

services:
    product_admin_controller:
      class: Application\Sonata\ProductBundle\Controller\ProductAdminController
      arguments: ["@service_container"]
      tags:
            - { name: doctrine.event_listener, event: postLoad, connection: default  }
Run Code Online (Sandbox Code Playgroud)

而我的控制器:

class ProductAdminController extends Controller
{
    protected $container;

    public function __construct(\ContainerInterface $container)
    {
        $this->container = $container;
    }
}
Run Code Online (Sandbox Code Playgroud)

dependency-injection symfony sonata

5
推荐指数
1
解决办法
5825
查看次数

标签 统计

symfony ×3

dependency-injection ×1

php ×1

sonata ×1