Symfony 3 - 无法加载类型表单类型

时间:2016-02-22 18:55:42

标签: php symfony

我刚刚将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中它应该如何?

谢谢!

2 个答案:

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