2017-08-31 15 views
1

のJSONを取得し、私はliformまたはliform-bundleを使用して、私のコントローラで私のフォームタイプのJSONを生成しようとしているが、エラーましたよ:私にformTypeスキーマ

CRITICAL - キャッチされないPHPの例外のSymfony \コンポーネント\ Debug]を\ Exception \ UndefinedMethodException: "クラス" Symfony \ Component \ Form \ Extension \ DataCollector \ Proxy \ ResolvedTypeDataCollectorProxy "の" getBlockPrefix "という未定義のメソッドを呼び出そうとしました。

$form = $this->createForm(new FormType(), $entity, array(
     'method' => 'PUT', 
     'csrf_protection' => false, 
    )); 
$schema = json_encode($this->get('liform')->transform($form)); 

マイ形式:/home/admin/Documents/displayce/code/vendor/limenius/liform/src/Limenius/Liform/FormUtil.phpライン39

私のコントローラのコードでタイプコード:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 

     ->add('startDate', 'date', array(
      'label' => 'Start Date', 
      'required' => false, 
      'widget' => 'single_text', 
      'format' => 'dd/MM/yyyy', 
      'input' => 'datetime', 
     )) 
     ->add('endDate', 'date', array(
      'label' => 'End Date (included)', 
      'required' => false, 
      'widget' => 'single_text', 
      'format' => 'dd/MM/yyyy', 
      'input' => 'datetime', 
     )) 
     ->add('name', 'text', array(
      'label' => 'Name', 
      'max_length' => 255, 
     )) 
     ->add('budget', 'money', array(
      'label' => 'Budget (target)', 
      'required' => true, 
      'scale' => 0, // not showing decimals 
     )) 
     ->add('target', 'targeting', array(
      'cascade_validation' => true, 
     )); 
} 

とターゲティングタイプ:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('contexts', 'entity', array(
      'label' => 'Context(s)', 
      'class' => 'AppBundle\Entity\Context', 
      'choice_label' => 'name', 
      'expanded' => false, 
      'multiple' => true, 
      'required' => false, 
     )) 
     ->add('contextDetails', 'entity', array(
      'label' => 'Detailed Context(s)', 
      'class' => 'AppBundle\Entity\ContextDetail', 
      'choice_label' => 'name', 
      'group_by' => 'context.name', 
      'expanded' => false, 
      'multiple' => true, 
      'required' => false, 
     )) 
     ->add('dataVariables', 'entity', array(
      'label' => 'Variable', 
      'class' => 'AppBundle\Entity\DataVariable', 
      'choice_label' => 'name', 
      'expanded' => false, 
      'multiple' => true, 
      'group_by' => function($dataVariable, $key, $index) { 
       return $dataVariable->getDataProvider()->getName(); 
      } 
     )) 

     // Include criteria 
     ->add('region', 'choice', array(
      'label' => 'Region(s)', 
      'choices' => RegionDepartment::$regions, 
      'expanded' => false, 
      'multiple' => true, 
      'required' => false, 
     )) 
     ->add('department', 'choice', array(
      'label' => 'Department(s)', 
      'choices' => RegionDepartment::$departments, 
      'expanded' => false, 
      'multiple' => true, 
      'required' => false, 
     )) 
    ; 

ネストしたフォームタイプを使用している可能性がありますか?

私が目標としているのはsymfony FormTypeとReact Componentを組み合わせて解決策にリダイレクトできれば嬉しいです。

答えて

0

私は変更するバンドルをフォーク - > getBlockPrefixへ - >のgetName()最初のものはsymfonyにおいてForm.phpではありませんので、 2.7

0

このようなあなたにformTypeとターゲット型にgetBlockPrefixを追加します。

public function getBlockPrefix() 
{ 
    return 'name of your form type'; 
} 
+0

"クラス" Symfony \ Component \ Form \ Form "の" getBlockPrefix "という未定義のメソッドを呼び出そうとしました。" Form.phpに関数がありません。アクセスできません。 –

+0

私はsymfony 2.7を使用しています。それはもっと最近のバージョンで使う関数なのでしょうか、それとも古いものでしたか? –

+1

Symfony 2.8にアップデートすることで問題は解決します。 – xabbuh