2016-02-22 14 views
7

właśnie aktualizowany symfony od 2,7 do 3,0 i mam pewne problemy z nim ..Symfony 3 - Nie można załadować formularz typ typ

To mogę załadować moje typy formularzy. Oto przykład.

services.xml

app.search: 
     class: AppBundle\Form\Type\SearchFormType 
     tags: 
      - { name: form.type, alias: app_search } 

Ów jak im próbuje utworzyć formularz.

$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'; 
    } 
} 

Pierwsze następny błąd:

An exception has been thrown during the rendering of a template ("Could not load type "app_search"") in ....

Jak to powinno wyglądać w Symfony 3.0?

Dzięki!

+1

Wiem, że brzmi to podejrzanie, ale pierwszym miejscem, które należy obejrzeć, jest dokumentacja: http://symfony.com/doc/current/book/forms.html#building-the-form. Zauważysz, że aliasy formularzy, takie jak "tekst", zniknęły. Jest to również wspomniane w pliku aktualizacji. Jak również kilkadziesiąt ostatnich pytań stackoverflow. – Cerad

Odpowiedz

7

należy zmienić ustawienia tak, aby ..

app.search: 
    class: AppBundle\Form\Type\SearchFormType 
    tags: 
     - { name: form.type } 

I w swoim rodzaju forma

use Symfony\Component\Form\Extension\Core\Type\TextType; 

    // ... 
    $builder->add('phrase', TextType::class); 

Następnie nazwać to wykorzystać ...

$form = $this->createForm(SearchFormType::class, new Search()); 
// or $form = $this->createForm('AppBundle\Form\Type\SearchFormType', new Search()); 

Długie i krótkie jest to, że formy nie są już nazywane, są one przywoływane przez nazwę klasy.

+0

Próbowałem już tego. Otrzymuję Wyjątek został zgłoszony podczas renderowania szablonu ("Nie można załadować typu" tekst "") – Tigran

+0

Zobacz mój przyznaję, snarky i nieprzydatny komentarz powyżej. – Cerad

+0

Przepraszam, że tęskniłem za tym. Zaktualizowałem. – qooplmao

5

Utknąłem przez to około 2 godzin dzisiaj. A problem powstał po prostu z przestrzeni nazw typu formularza. Zamiast używać namespace AppBundle\Form\Type; w pliku , napisz namespace AppBundle\Form;.

Powiązane problemy