2016-04-05 15 views
1

biçimine nasıl uygularım? Fosrestbundle kullanarak yama yöntemini uyguluyorum ve uygun yama yöntemi oluşturmak istiyorum.Yalnızca başvuru nesnesinden fark değişikliklerini

Bunu yapmak için, denetleyiciyi yarattım ve bir argüman alan patchAction var, Varlık, kendim yazdığım ParamConverter üzerinden geçirildi. Varlık EntityType öğesine aktarıldı ve işte sorun. Yalnızca değişen alanları güncellemek ve Varlıktan geçtiğimde, isteklerden gelen nesnelere boş değer atamak istiyorum. Varlık İşte

  1. Kullanıcı gönderir akış var POPO

    olan YAMA isteği için/varlık/{Varlık} 12

  2. Param dönüştürücü verileri için DB soran uygun idareye 12 dönüştürür/varlık/diyelim ki
  3. EntityFormType Öğeyi argüman olarak alır ve istekten nesnelere veri ayarlar.
  4. Varlık buna formda boş olan alanlar için boş setleri nesne bütün Varlık alır sonra sorun o şeklidir DB

için saklanır. Bu değerleri alıp varsayılan olarak ayarladığımı tercih ederim.

Doktrin ORM kullanmıyorum ve kullanamıyorum.

kodu:

/** 
* @ParamConverter("Entity", class="Entity") 
*/ 
public function patchAction(Entity $entity, Request $request) 
{ 
    var_dump($entity); // object mapped from DB 
    $form = $this->createForm(new EntityType(), $entity); 
    $form->handleRequest($request); 
    $form->submit($request); 
    var_dump($entity);exit; //here I get only values that i passed through patch method, rest of them is set to null 
} 

Ben formu olayları düşünmeye veya fark yöntemi gibi bir şey yaratmak ama muhtemelen daha iyi bir çözüm yoktur ki?

cevap

2

Formunuzu method seçenek kümesi ile oluşturmanız gerekir.

$form = $this->createForm(new EntityType(), $entity, array(
    'method' => $request->getMethod(), 
)); 

isteği sonra Symfony'nin yalnızca gönderilen alanları günceller PATH yöntemle göndermek ise.

nasıl Symfony'de sahte PATCH yönteme: http://symfony.com/doc/current/cookbook/routing/method_parameters.html#faking-the-method-with-method

+0

Teşekkür Paweł ben Önemsiz olduğunu biliyordum ama çözüm bulamadım çalıştı. Dzięki! – Robert

İlgili konular