I have just updated symfony from 2.7 to 3.0 and got some troubles with it..
It cant load my form types. Here is an example.
services.xml
app.search:
class: AppBundle\Form\Type\SearchFormType
tags:
- { name: form.type, alias: app_search }
Thats how im trying to create form.
$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';
}
}
Getting next error:
An exception has been thrown during the rendering of a template ("Could not load type "app_search"") in ....
How it should look like in symfony 3.0?
Thanks !
You should change your settings to..
app.search:
class: AppBundle\Form\Type\SearchFormType
tags:
- { name: form.type }
And in your form type
use Symfony\Component\Form\Extension\Core\Type\TextType;
// ...
$builder->add('phrase', TextType::class);
Then to call it use...
$form = $this->createForm(SearchFormType::class, new Search());
// or $form = $this->createForm('AppBundle\Form\Type\SearchFormType', new Search());
The long and short of it is that forms aren't named any more, they are referenced by the class name.
I got stuck by this for about 2 hours today. And the problem simply came from the namespace of the form type. Instead of using namespace AppBundle\\Form\\Type;
in your SearchFormType.php
file, write namespace AppBundle\\Form;
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.