Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php KNP菜单包赢得';t在功能测试的控制器中运行时访问实体_Php_Symfony_Doctrine Orm_Knpmenubundle_Knpmenu - Fatal编程技术网

Php KNP菜单包赢得';t在功能测试的控制器中运行时访问实体

Php KNP菜单包赢得';t在功能测试的控制器中运行时访问实体,php,symfony,doctrine-orm,knpmenubundle,knpmenu,Php,Symfony,Doctrine Orm,Knpmenubundle,Knpmenu,这件事真让我难堪 我试图在我的应用程序上运行功能测试,但是遇到了KNP菜单包的问题,我不完全确定我到底出了什么问题 我有一些实体被条令装置加载,我知道它们在那里——测试套件的其他部分在找到它们并断言它们是我想要的东西方面没有问题 在我的setUp()测试方法(扩展WebTestCase)中,我创建了一个客户机并将实体管理器注入其中,如下所示: /** * Create Client and inject services */ $this->client = static::creat

这件事真让我难堪

我试图在我的应用程序上运行功能测试,但是遇到了KNP菜单包的问题,我不完全确定我到底出了什么问题

我有一些实体被条令装置加载,我知道它们在那里——测试套件的其他部分在找到它们并断言它们是我想要的东西方面没有问题

在我的
setUp()
测试方法(扩展
WebTestCase
)中,我创建了一个客户机并将实体管理器注入其中,如下所示:

/**
 * Create Client and inject services
 */
$this->client = static::createClient();
$this->client->getContainer()->set( 'doctrine.orm.entity_manager', $this->em );
其他测试都不存在使用该实体管理器和查找实体的问题

我将菜单用作服务,定义如下:

the_site.menu_builder:
    class: TheSite\SiteBundle\Menu\MenuBuilder
    arguments: [ "@knp_menu.factory", "@doctrine.orm.entity_manager" ]

the_site.menu.breadcrumb:
    class: Knp\Menu\MenuItem
    factory_service: the_site.menu_builder
    factory_method: breadcrumbMenu
    arguments: [ "@request" ]
    scope: request
    tags:
        - { name: knp_menu.menu, alias: breadcrumb }
它似乎被以下代码卡住了:

public function breadcrumbMenu( Request $request )
{
     // ......

      /**
       * @var $category NewsCategory
       */
      $category = $this->em->getRepository( 'TheSiteSiteBundle:Category' )->findOneByCanonical( $request->get( 'category' ) );
      $categories = [];

      do
      {
        $categories[] = $category;

        $category     = $category->getParent();
      } while( $category !== null );

      // .....
}
我做了一点调查(包括一些非常复杂的变量),但似乎找不到fixture设置的任何类别。如果有帮助的话,这些实体是在一个条令事务中设置的,但是——其他的测试证明,客户机在之前找到了这些实体

$request->get('category')
产生了它应该做的事情,就我所知,这是实体管理器的问题

如果需要更多的代码,我非常乐意与大家分享

编辑:我可能会收回我说的话——现在它似乎没有在任何地方加载实体。也许数据库里还有一些什么