在formtype中注入参数时缺少参数1

时间:2016-01-12 06:29:33

标签: symfony dependency-injection symfony-forms

这是我的服务定义: services.yml:

petapp.form.type.species:
class: PetAppCoreBundle\Form\Type\SpeciesType
arguments: ['%locale%']
tags:
- { name: form.type }

在config.yml

parameters:
locale: en

在我的物种类型中:

/**
* Default locale
*
* @var sting
*
*/
private $default_locale;

/**
 * Constructor
 *
 * @param string $locale
 */
public function __construct($locale)
{
    $this->default_locale = $locale;
}

我不知道为什么DIC没有使用%locale%参数调用我的FormType。 我有以下错误:

Warning: Missing argument 1 for PetApp\CoreBundle\Form\Type\SpeciesType::__construct(), called in /home/dev/petapp/vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php on line 90 and defined

我使用新的2.8语法调用createForm:(php 5.4)

$form = $this->createForm('PetApp\CoreBundle\Form\Type\SpeciesType',$species);

你对这个问题有什么看法吗? 感谢。

大卫

3 个答案:

答案 0 :(得分:0)

尝试:

$form = $this->createForm(SpeciesType:class,$species);

而不是:

$form = $this->createForm('PetApp\CoreBundle\Form\Type\SpeciesType',$species);

希望这个帮助

答案 1 :(得分:0)

感谢您的回答

@Yassine Guedidi:

我的服务似乎在容器中正确注册:     [dev @ goliath petapp] $ console debug:container | grep种      petapp.form.type.species PetAppCoreBundle \ Form \ Type \ SpeciesType

@xabbuh: 在CoreBundle的service.yml中:

services:
    petapp.form.type.species:
        class: PetAppCoreBundle\Form\Type\SpeciesType
        arguments:
            - 'en'
        tags:
            - { name: form.type }

@Matteo: 此语法仅适用于5.5。     $ form = $ this-> createForm(SpeciesType:class,$ species);

答案 2 :(得分:0)

@xabbuh。谢谢,FQCN上有一个拼写错误。

PetApp \ CoreBundle \ Form \ Type \ SpeciesType而不是PetAppCoreBundle \ Form \ Type \ SpeciesType

  petapp.form.type.species:
    class: PetApp\CoreBundle\Form\Type\SpeciesType
    arguments: ['%locale%']
    tags:
    - { name: form.type }