我想在__construct控制器中使用服务。 所以,我按照食谱:http://symfony.com/doc/current/cookbook/controller/service.html
但我不行,这是我的代码:
class CheckoutController extends Controller
{
private $checkoutService;
public function __construct(Panier $checkoutService){
$this->session = new Session();
if (!$this->session->has('panier')){
$this->checkoutService = $checkoutService;
$this->session->set('panier',$this->checkoutService);
}
if (!$this->session->has('etape')) $this->session->set('etape',0);
}`
我在service.xml中声明了这个控制器:
acme.checkout_controller:
class: acme\EcommerceBundle\Controller\CheckoutController
arguments: [@kiyoi.getCheckout]
所以我得到这个错误,
Catchable Fatal Error: Argument 1 passed to acme\EcommerceBundle\Controller\CheckoutController::__construct() must be an instance of acme\EcommerceBundle\Checkout\Panier, none given, called in /var/www/v2-acme-site/app/cache/dev/classes.php on line 2176 and defined
我不明白为什么我会收到这个错误!!
您知道在控制器的构造函数中使用服务的另一种解决方案吗?感谢您的帮助
答案 0 :(得分:1)
您还需要更改路由以使用服务名称来实现此功能。
来自这个
checkout :
path: /checkout
defaults: { _controller: TestBundle:Cart:checkout}
到这个
checkout:
path: /checkout
defaults: { _controller: acme.checkout_controller:checkout}