2016-02-22 4 views
7

をロードできませんでした。ここに例があります。symfonyの3は、 - それは私のフォームタイプをロードカント..私はちょうど2.7から3.0へのsymfonyを更新し、それにいくつかのトラブルを持っている</p> <p>をタイプフォームタイプ

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

取得次のエラー:

それはsymfonyの3.0でのようになりますどのように

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

ありがとうございます!

+1

私はそれがsnarkyと聞こえることは知っていますが、最初に見えるのはドキュメントです:http://symfony.com/doc/current/book/forms.html#building-the-form。 「テキスト」などのフォームエイリアスがなくなっていることがわかります。これはアップグレードファイルにも記載されています。数十もの最近のスタックオーバーフローに関する質問があります。 – Cerad

答えて

7

あなたは

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

ロングとショート...使用し、それを呼び出すためにその後

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

そして、あなたのフォームタイプで

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

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

...にあなたの設定を変更する必要がありますフォームの名前がそれ以上指定されていない場合は、クラス名で参照されます。

+0

私はすでにそれを試みました。 Im gettingテンプレートのレンダリング中に例外がスローされました( "タイプ"テキスト ""をロードできませんでした) – Tigran

+0

上記のsnarkyと役に立たないコメントを参照してください。 – Cerad

+0

申し訳ありませんが、私はそのビットを逃しました。私は更新しました。 – qooplmao

5

今日はこれで約2時間拘束されました。そして、この問題は単純にフォームタイプの名前空間に由来しています。 SearchFormType.phpファイルにnamespace AppBundle\Form\Type;を使用する代わりに、namespace AppBundle\Form;と記入してください。

関連する問題

 関連する問題