2016-04-12 30 views
0

Sanırım Symfony 2'nin bununla nasıl başa çıktığı konusunda biraz kafam karıştı ve şimdi koleksiyonumuzu nasıl kurtaracağım diye sortamıyorum.Symfony 2 Koleksiyonumu Nasıl Kaydederim?

Ben Symfony 2.7.10

ben kopyaladığınız bir form var kullanarak, böylece iki form türleri, ikinci kurulum ben JQuery ile forma ekleyebileceğiniz bir koleksiyona sahiptir.

My Formu Kodu: - Bu benim This Formu Şablonumdaki oluşturulmakta olan inputcol koleksiyonu

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

için şeklidir

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 
             ]); 
} 

hale şeklidir

{{ 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) }} 

Bu kod, Symfony 2'den kodlanmış.

Ve bu yine benim JQuery kodu

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(); 

, ben de dokümanlar gelen düşünüyorum ama data-count etiketiyle döngü saymak düzenlediğiniz bu. Bunu yaptım çünkü bu kod Twig şablon kodunu beğenmeyecek bir Grunt Task ile çalıştırılıyor.

Bu, herhangi bir sorun olmadan çalışıyor gibi görünüyor, ancak bu verileri varlıklarım ile nasıl kaydedileceği konusunda kafam karışmış küçük bir git biliyorum.

Bu benim denetleyicisi kodu böyle görünüyor,

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()]); 
} 

Şimdi bir sorun çıkmadı gibi benim JQuery görünüyor biliyorum (ya da ben öyle düşünüyorum diye de). Ekleyebileceğim birçok girdi var ve bu verilere hem $_POST hem de Symfony 2 Request ile erişebiliyorum.

Ancak, Varlığa erişmeye çalıştığımda, her zaman boş mu? Verilerimdeki verileri tekrar kuruluşa nasıl bağlarım? ya da yanlış bir şey mi yaptım?

Tüm yardımlar için bekleriz.

cevap

1

Ancak, Varlık'a erişmeye çalıştığımda, her zaman boş mu? Verilerimdeki verileri nasıl iliştiririm? veya 'u yanlış yaptım mı?

zaman => false sonra isteğinden değeri

+0

Tamam varlık ile sınırlanmış değildir 'eşleştirilmiş', ama bu çıkartırsanız, bu nasıl çalışır? Davet ediyorum, bir haritacı ve tahsilat kurmam gerekiyor, bu yüzden doğru bir şekilde haritalanacak. Teşekkürler! –

+0

Varlık ve kullanım doktrinine özellik ekleyin: create: entities method methods. –

+0

Teşekkürler dostum, elimden geleni yaparım! Çok teşekkürler –