Symfony2 外 class
Symfony2 Outside class
我使用 symfony2 (2.6) 并且我有 class 到树枝的全局变量。例如,class 菜单:
namespace Cms\PageBundle\Twig;
use Doctrine\ORM\EntityManager;
class Menu {
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function show(){
/******/
}
}
和services.yml
services:
class_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager']
twig_menu:
class: Cms\PageBundle\Twig\Menu
参见:
ContextErrorException in Menu.php line 9:
Catchable Fatal Error: Argument 1 passed to
Cms\PageBundle\Twig\Menu::__construct() must be an instance of
Doctrine\ORM\EntityManager, none given, called in
/home/cms/public_html/app/cache/dev/appDevDebugProjectContainer.php on
line 3834 and defined
一般,任何class(外部)的构造函数和(参数)学说都有问题。
为什么?
Symfony2 getdoctrine outside of Model/Controller
这个错误完全是意料之中的。 Symfony2
期望通过调用 __construct
构造函数来创建服务实例。如果您想保留单个 class,您需要删除 __construct
并改用 setter
依赖注入。
关于这个有官方文档:Optional Dependencies: Setter Injection
基本上,您不会在创建服务实例期间传递 EntityManager
实例,而是 "set it later".
希望对您有所帮助。
更新:
如果您回退到原来的解决方案,请确保在两种情况下都通过 EntityManager
:
services:
class_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager']
twig_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager']
我使用 symfony2 (2.6) 并且我有 class 到树枝的全局变量。例如,class 菜单:
namespace Cms\PageBundle\Twig;
use Doctrine\ORM\EntityManager;
class Menu {
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function show(){
/******/
}
}
和services.yml
services:
class_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager']
twig_menu:
class: Cms\PageBundle\Twig\Menu
参见:
ContextErrorException in Menu.php line 9: Catchable Fatal Error: Argument 1 passed to Cms\PageBundle\Twig\Menu::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /home/cms/public_html/app/cache/dev/appDevDebugProjectContainer.php on line 3834 and defined
一般,任何class(外部)的构造函数和(参数)学说都有问题。 为什么?
Symfony2 getdoctrine outside of Model/Controller
这个错误完全是意料之中的。 Symfony2
期望通过调用 __construct
构造函数来创建服务实例。如果您想保留单个 class,您需要删除 __construct
并改用 setter
依赖注入。
关于这个有官方文档:Optional Dependencies: Setter Injection
基本上,您不会在创建服务实例期间传递 EntityManager
实例,而是 "set it later".
希望对您有所帮助。
更新:
如果您回退到原来的解决方案,请确保在两种情况下都通过 EntityManager
:
services:
class_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager']
twig_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager']