我试图将参数传递给我通过cli创建的新Bundle中的新控制器(我也尝试过手动操作)。它可以是来自parameters.yml文件的任何东西,字符串,服务,参数,没有任何结果。
错误:
{"code":500,"message":"Warning: Missing argument 1 for MyProject\\PosBundle\\Controller\\OfferController::__construct(), called in \/var\/www\/vhosts\/httpdocs\/myproject\/vendor\/symfony\/symfony\/src\/Symfony\/Component\/HttpKernel\/Controller\/ControllerResolver.php on line 162 and defined","errors":null}
我的文件
service.yml
services:
myproject_pos_offer_controller:
class: MyProject\PosBundle\Controller\OfferController
arguments: ['templating']
我试过这样做:
services:
myproject_pos_offer_controller:
class: MyProject\PosBundle\Controller\OfferController
arguments:
someString: 'templating'
OfferController :
class OfferController extends RestController
{
private $someString;
public function __construct($someString)
{
$this->$someString = $someString;
}
public function indexAction(){
}
}
我做错了什么或忘了做什么?
答案 0 :(得分:1)
Cerad是对的(感谢您的帮助!)。我必须将routing.yml
配置中的控制器作为服务传递。确实发现我必须调试ControllerResolver.php
,这很有趣。
<强>解决方案强>
上面的代码是正确的。问题出在我的routing.yml
<强>错误强>
myproject_pos.offer_create:
path: /{store_hash}/offers
defaults: { _controller: MyProjectPosBundle:Offer:create }
methods: 'POST'
<强>正确强>
myproject_pos.offer_create:
path: /{store_hash}/offers
defaults: { _controller: myproject_pos_offer_controller:createAction }
methods: 'POST'
如您所见键位于默认值 attrubute。