我刚刚将symfony从2.7更新到3.0并且遇到了一些问题..
无法加载我的表单类型。这是一个例子。
的services.xml
app.search:
class: AppBundle\Form\Type\SearchFormType
tags:
- { name: form.type, alias: app_search }
这就是我如何尝试创建表单。
$form = $this->createForm('app_search', new Search());
SearchFormType
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class SearchFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('phrase', 'text');
}
public function getBlockPrefix()
{
return 'app_search';
}
}
获取下一个错误:
在渲染模板期间抛出了异常 ("无法加载类型" app_search"")....
在symfony 3.0中它应该如何?
谢谢!
答案 0 :(得分:8)
您应该将设置更改为..
app.search:
class: AppBundle\Form\Type\SearchFormType
tags:
- { name: form.type }
并在表单中输入
use Symfony\Component\Form\Extension\Core\Type\TextType;
// ...
$builder->add('phrase', TextType::class);
然后称之为使用......
$form = $this->createForm(SearchFormType::class, new Search());
// or $form = $this->createForm('AppBundle\Form\Type\SearchFormType', new Search());
它的长短不再是表单不再被命名,它们由类名引用。
答案 1 :(得分:5)
今天我被卡住了大约2个小时。问题只来自表单类型的命名空间。不要在namespace AppBundle\Form\Type;
文件中使用SearchFormType.php
,而应撰写namespace AppBundle\Form;
。