Symfony2不会将参数传递给服务

时间:2016-05-25 11:12:50

标签: php symfony service

我试图将参数传递给我通过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(){

    }
}

我做错了什么或忘了做什么?

1 个答案:

答案 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。