2016-04-12 13 views
0

私は少し混乱していると思うが、これでSymfony 2がどのように扱われているのか、私は今コレクションを保存する方法をよく知っている。Symfony 2コレクションを保存するには?

私が使用してsymfonyの2.7.10

私がコピーしたフォーム、ので、2つのフォームタイプを持っている、第二の設定は、私はjQueryを使ってフォームに追加することができ、コレクションを持っています。

マイフォームコード: - これは私がこれはこれは、フォームが私のテンプレートでレンダリングされているinputcolコレクション

public function buildForm(FormBuilderInterface $builder, array $options) { 
    $builder 
     ->add('input1', 'test', ['label' => 'Other1:']) 
     ->add('input2', 'text', ['label' => 'Other2:']); 
} 

するためのフォームです

public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder 
     ->add('input1', 'text', ['label' => 'xxxx:']) 
     ->add('input2', 'text', ['label' => 'xxxx:']) 
     ->add('inputcol', 'collection', [ 
             'type' => new AddInputsType(), 
             'allow_add' => true, 
             'allow_delete' => true, 
             'prototype' => true, 
             'label' => false, 
             'mapped' => false 
             ]); 
} 

レンダリング形式です

{{ form_start(FormTest) }} 

    <span id="testMe" data-count="1" data-prototype="{{ form_widget(FormTest.inputcol.vars.prototype)|e }}"> 
     {% for emailField in FormTest.inputcol %} 
      {{ form_errors(emailField) }} 
      {{ form_widget(emailField) }} 
     {% endfor %} 
    </span> 

    <span class="ContentHere"></span> 

    <div class="form-group"> 
     <div id="addNew" class="btn">ADD</div> 
    </div> 

{{ form_end(FormTest) }} 

このコードは、Symfony 2のドキュメントからコード化されていたと思います。

そして、これは私のjQueryコード再び

var testAJAX = function() { 
    $('#addNew').on('click', function() { 
    var GetDataCount = parseInt($('#testMe').attr('data-count')); 
    var emailList = $('#testMe'); 
    var newWidget = emailList.attr('data-prototype'); 

     newWidget = newWidget.replace(/__name__/g, GetDataCount); 

    var newCount = GetDataCount + 1; 
    $('#testMe').attr('data-count', newCount); 

    var newLi = $('.ContentHere').append(newWidget); 
    }); 
}; 

testAJAX(); 

で、これは私はまた、ドキュメントから来るが、私はdata-countタグでループをカウントするように編集していると思います。私は主に、このコードは、Twigテンプレートコードが気に入らないGrunt Taskで実行されているためです。

これはすべて問題なく動作するようですが、このデータを自分のエンティティに保存する方法を混乱させる小さなgitを知っています。

これは私のコントローラコードがどのように見えるかで、

public function AdminHomeAction(Request $MyRequest) { 

    $GetEn = new EntityHere(); 
    $ActionURL = $this->generateUrl('dashboard'); 
    $Form = $this->createForm(new AddTestType(), $GetEn, ['action' => $ActionURL]) 
         ->add('save', 'submit', ['label' => 'SAVE', 
                'attr' => ['class' => 'SaveButton'], 
               ]); 

    $Form->handleRequest($MyRequest); 

    if ($Form->isValid()) { 
      $test = $MyRequest->get('xxxxx')['xxxxx']; 

      dump( $test); 

      dump($_POST); 

      die(); 
    } 

    return $this->render('Bundle:home.html.twig', ['FormTest' => $Form->createView()]); 
} 

は今、私はそれが正常に動作しているように私のjQueryのに見えることを知っている(または私はそれだと思うないように)。それは私が望む多くの入力を追加することができ、私は$_POSTとSymfony 2 Requestの両方でそのデータにアクセスできます。

エンティティにアクセスしようとすると、常に空になりますか?投稿データのデータをエンティティにバインドするにはどうすればよいですか?私は間違った何かをしたのですか?

すべて歓迎

ありがとうございます。

答えて

1

エンティティにアクセスしようとすると、常に空になりますか? 私のポストデータのデータをエンティティにバインドする方法を教えてください。または私は 何か間違っている?

要求から「マッピングされた」=>その後、偽の値は、[OK]を実体

+0

で囲まれたが、私はそれを取る場合、どのように仕事をしていない場合は?私はゲストになっています。コレクションにゲッターとセッターを設定しなければならないので、マップされています。ありがとう! –

+0

プロパティをエンティティに追加し、doctrine:generate:entitiesコマンドを使用してメソッドを生成します。 –

+0

ありがとう、私はできるときにそれを与える!多くのありがとう –

関連する問題