Zend Framework: onay kutuları olarak bir form birden fazla veritabanı kayıtlarının Taşıma

3 Cevap php

I'm new to zend framework but have made my first steps with it successfully. Until now I have created some Zend_Forms which are mapping single records of my model to the form fields. I have handled the forms with form classes for each case. This works all very well until now.

Şimdi ben bir ürüne özelliklere asign zorunda durum var. Özellikler ve ürünleri benim uygulama parçaları bulunmaktadır. Özellikler üç tabloda benim veritabanında saklanır. For each feature there is one record Üçüncü tablodaki.

  • İlk özellik grubun adı kaydedilir özellik grubudur. Her özellik bir özellik grubuna asigned olmalıdır.

  • İkinci tabloda özellikleri tablodur. Bu tablo özellik grubuna bir yabancı anahtar ve özelliği adı vardır.

  • Üçüncü tablo ürünlerin özellikleri bağlayan çok-çok ilişkisi olan bir tür. Bu tablo ürünün bu eşsiz özelliği (iki yabancı anahtarların yanında) isteğe bağlı bir değer içeren bir AIP alanına sahiptir.

Örneğin, ürün 4,78 kg bir ağırlığa sahipse değer "4,78" üçüncü tablosunda saklanır ve etiket "% s kg ağırlık" ikinci tabloda depolanır. Özelliği grubu "fiziksel özellikler" gibi bir şey ilk tabloda kaydedilir vardı olabilir.

To cut a long story short: My problem is how to handle the case that I have to create and edit multiple database records in one form. The plan is to have a form with many checkboxes for each for a feature whereby features are thematicaly grouped. Every checkbox should have an aditional text field to input optional values.

3 Cevap

you could make a custom form class that extends Zend_Form and use that for you classes. It could take in the construct instances of your models and construct the form inputs based on that models. After form validation in your controller you can do

$values = $form->getValues();

ve tekrar modelleri doldurmak için bu diziyi kullanabilirsiniz

Siz form sınıf içinde alt form (Zend_Form_SubForm) oluşturmayı deneyebilirsiniz. Bu farklı tablolar için alanlar ayırabilirsiniz. Eğer ağaç tablodan tüm verileri çekin zaman baskısı için, kontrolör, masalarda karşılık alt form doldurabilirsiniz.

Kendi elemanlarını oluşturmak için Zend_Form genişletmek için deneyebilirsiniz.

Öznitelikler (özellikler ve ürün) almak için DB bağlayan bir sınıf yazmak mümkün olacaktır.

Eğer yazdı varsayarsak My_Form_Element_Features & My_Form_Element_Products sınıfları, yapmanız $features = new My_Form_Features(); ve getValues(), populate(), vb gibi temel sınıf yöntemlerini kullanabilirsiniz

Sen başlatmak için orada bir göz atabilirsiniz:

-

Yorumlarınız cevap için kullanabilirsiniz:

Zend_Form::setElementsBelongTo($array):

Daha fazla bilgi için Zend_Form Advanced manual page bulunabilir.