这是我的服务定义: 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);
你对这个问题有什么看法吗? 感谢。
大卫
答案 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 }