2013-04-16 11 views
5

Diyelim ki bir sürü alan içeren bir HTML formum var. Bazı alanlar Ürüne, bazıları Siparişe, bazıları Diğer'ye aittir. Form gönderildiğinde, bu isteği almak ve ardından Denetleyici'de Ürün, Sipariş ve Diğer için Symfony formları oluşturmak istiyorum. Sonra kısmi form verisi almak ve uygun formlarla bağlamak istiyorum. Bir örnek Böyle bir şey olur:Symfony2 formuna bir dizi (istek değil) nasıl bağlanır?

$productArray = array('name'=>$request->get('name')); 
$pf = $this->createForm(new \MyBundle\Form\ProductType(), $product); 
$pf->bind($productArray); 
if($pf->isValid()) { 
    // submit product data 
} 

// Do same for Order (but use order data) 

// Do same for Other (but use other data) 

bunu yapmak çalıştığınızda şeydir, ben $ form-> isValid() metodu çalışma alınamıyor. Bind() adımının başarısız olduğu görülüyor. Form belirteci ile ilgili olması gerektiği konusunda bir şüphem var, ancak nasıl düzelteceğimi bilmiyorum. Yine, kendi HTML formumu bir görünümde yapıyorum (form_widget() 'ı kullanmamıştım, bir şekilde FormTypes grubunu birleştirmek için gereken tüm komplikasyonların nedeni). Basit HTML formunu Symfony form özelliği ile birlikte kullanmanın çok basit bir yolunu istiyorum.

Herkes Symfony ile bu mümkün olduğunu söyleyebilir mi ve ben bunu yapmak için nasıl giderim? Verileri el ile bağlamak için CSRF belirtecini devre dışı bırakmanız gerekir.

cevap

2

Bunu yapmak için form nesnesini oluştururken csrf_protection seçeneğini kullanabilirsiniz. Bunun gibi

:

$pf = $this->createForm(new \MyBundle\Form\ProductType(), $product, array(
    'csrf_protection' => false 
)); 
+0

çok teşekkürler kardeşim. Bu, sorunumu çözmeme yardımcı oluyor –

0

diğer formları gömmek bir form gerekebilir gibi hissediyorum:

// Main form 
$builder 
    ->add('product', new ProductType) 
    ->add('order', new OrderType); 

ve bağlı olduğu bu diğer nesnelere ilişkiyi içeren bir nesne var istek için. Öyle ki, sadece bir nesneyi istekle bağlamak ve gömülü nesneye basit alıcılar aracılığıyla erişmek zorundasınız.

Yeterli açıklığım var mı?

İlgili konular