我想在我的Symfony2控制器中使用构造函数,但是我有这个错误:
ContextErrorException: Catchable Fatal Error: Argument 1 passed to Acme\ApplicationBundle\Controller\CalendarActivityController::__construct() must implement interface Symfony\Component\DependencyInjection\ContainerInterface, none given, called in /Users/root/Documents/projects/Acme/Symfony/app/cache/dev/classes.php on line 2374 and defined in /Users/root/Documents/projects/Test/Symfony/src/Acme/ApplicationBundle/Controller/CalendarActivityController.php line 16
我的构造函数:
public function __construct(Container $container) {
$this->container = $container;
}
我必须使用构造函数,因为有时候我使用我的控制器作为服务,在这种情况下,容器没有定义。
答案 0 :(得分:1)
如果您的控制器本身已注册为服务,则可以将服务注入您的控制器。在官方文档中了解更多相关信息:http://symfony.com/doc/current/cookbook/controller/service.html
但是,我要指出,注入Container的价值不大。扩展Symfony\Component\DependencyInjection\ContainerAware要容易得多。 Symfony会自动为您注入容器(因为ContainerAware
实现了ContainerAwareInterface
)。
如果要注入特定服务,请将控制器注册为服务。
否则使用ContainerAware
。
答案 1 :(得分:0)
你必须使用依赖注入来调用容器使用USE
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
private $container;
public function __construct(Container $container) {
$this->container = $container;
}