| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
ZEND_Form und die Decoratoren
Diskussion: ZEND_Form und die Decoratoren im Forum Code Kitchen, in der Kategorie Software Home; Anzeige
Hallo Community,
arbeite mich gerade in das Zend_Form Prinzip ein, und habe ein paar kleine Denkprobleme.
Momentan nutze ich ...
 |
25.11.10, 19:13
|
#1 (permalink)
|
Registriert seit: 30.03.07 Likes: 17 | ZEND_Form und die Decoratoren Anzeige Hallo Community,
arbeite mich gerade in das Zend_Form Prinzip ein, und habe ein paar kleine Denkprobleme.
Momentan nutze ich das layout.phtml in dem der Content eingebunden ist.
Hier werden dann ja die benötigten Views, welche unter view/scripts liegen eingebunden.
Hier habe ich bisher immer den HTML Code geschrieben ud dann via <Php echo $this->test ?> eingebunden usw.. usw.. Funtioniert bisher alles auch super.
Jetzt möchte ich gerne Zend_Form einsetzen um mich einfach mit der Materie auch mal auseinander zu setzen.
Problem sind die Decoratoren...
unter Zuhilfenahme der Decoratoren kann ich ja jetzt auch dd,dl usw auch zu einem table, tr, td umsetzen und somit nicht den standard nutzen.
Wie stelle ich es jedoch an, wenn ich die Struktur wie folgt abbilden möchte...
Beispiel: form, div, table, tr, td
bekomme alles hin, ausser den div
Kennt jemand ein gutes Tutorial (bitte nicht die Zend API), oder hat jemand ein zwei zeilen code parat?? |
| |
25.11.10, 20:28
|
#2 (permalink)
|
Registriert seit: 12.06.08 Likes: 0 | 2 min google http://zendgeek.blogspot.com/2009/07...ecorators.html
Der Snippet der dich glaub ich interessiert  : PHP-Code: $form->addElement( $first_name );
$form->addElement( $surname );
$form->addDisplayGroup(array('first_name','surname'), 'individual');
$form->setDecorators(array( 'FormElements', array('HtmlTag',array('tag'=>'div','id'=>'blah')), 'individual' ));
|
| | | |
| | HaBOT
| - Anzeige - |
| |
25.11.10, 20:36
|
#3 (permalink)
| | Member of Honour
Registriert seit: 22.02.07 Likes: 77 | um allgemein mal noch Quellen für Zend-Framework-HowTos zu erwähnen:
ich finde, Ralf Eggert schreibt immer sehr schön verständlich.
hab mich auch mit seinem Travello-Blog-Tutorial damals in die Thematik Zend Framework eingearbeitet. (bzw. mit einer aktualisierten Version, die auf seinem Tut basierte)
Zum Zend_Form hat er z.B. auch was geschrieben, hab jetzt aber leider gerade nicht die Zeit, mir selbst den ganzen Artikel durchzulesen, aber vielleicht hilft's dir ja: http://it-republik.de/php/artikel/Ei...orks-1904.html |
| |
26.11.10, 07:24
|
#4 (permalink)
| Themenstarter
Registriert seit: 30.03.07 Likes: 17 | Danke für Eure schnelle Hilfe!
Werde mir die links und den Snippet gleich mal verinnerlichen! |
| |
26.11.10, 12:04
|
#5 (permalink)
| Themenstarter
Registriert seit: 30.03.07 Likes: 17 | Mmmmh...
Habe jetzt den gewünschten Erfolg erzielt. Und dachte es auch verstanden zu haben. PHP-Code: class Application_Form_Test extends Zend_Form { public function _construct( $options = null ) { parent::_construct( $options ); } public function init() { $lastName = $this->createElement('text', 'Nachname'); $lastName->setLabel('Nachname:') ->setAttrib('size', 25) ->addValidator('StringLength', false,array(3,50)) ->setValue('') ->setRequired(true); $givenName = $this->createElement('text', 'Vorname'); $givenName->setLabel('Vorname:') ->setAttrib('size', 25) ->addValidator('StringLength', false,array(3,50)) ->setValue( '' ) ->setRequired(true); $street = $this->createElement('text', 'Strasse'); $street->setLabel('Strasse:') ->setAttrib('size', 25) ->addValidator('StringLength', false,array(3,50)) ->setValue('') ->setRequired(true);
$postalcode = $this->createElement('text', 'Plz'); $postalcode->setLabel('Plz:') ->setAttrib('size', 5) ->addValidator('StringLength', false,array(5,5)) ->setValue('') ->setRequired(true); $city = $this->createElement('text', 'Wohnort'); $city->setLabel('Wohnort:') ->setAttrib('size', 50) ->addValidator('StringLength', false,array(1,50)) ->setValue('') ->setRequired(true); $this->addElements( array ( $lastName, $givenName, $street, $postalcode, $city, $password, $confirmPassword, ) ); $this->addDisplayGroup(array( 'Nachname', 'Vorname', 'Strasse', 'Plz', 'Wohnort', ),'contact', array('legend' => 'Contact Information') );
$this->setElementDecorators(array( 'viewHelper', 'Errors', array(array('contact'=>'HtmlTag'),array('tag'=>'td')), array('Label',array('tag'=>'td')), array(array('row'=>'HtmlTag'),array('tag'=>'tr')) )); $contact = $this->getDisplayGroup( 'contact' ); $contact->setDecorators(array( 'FormElements', array('HtmlTag',array('tag'=>'table','style'=>'')), )); $this->setDecorators(array( 'FormElements', array(array('contact'=>'HtmlTag'),array('tag'=>'div')), 'Form' )); } }
Um mein eigenes Verständnis zu testen  dachte ich jetzt dass der contact in einem Fieldset abgebildet werden soll
sprich --> div,fieldset,legend,table,tr,td
bekomme auch das fieldset hin PHP-Code: $this->setDecorators(array( 'FormElements', array( 'HtmlTag',array('tag'=>'fieldset','style'=>'')), array(array('contact'=>'HtmlTag'),array('tag'=>'div')), 'Form' ));
Wie kann ich dem Fieldset jetzt die legend zuweisen??? |
| |
30.11.10, 07:31
|
#6 (permalink)
| Themenstarter
Registriert seit: 30.03.07 Likes: 17 | So, ich für meinen Teil bekommen dass jetzt soweit umgesetzt. Für die, die eventuelle die gleichen Probleme haben ein zwei Beispiele...
Am Beispiel <table>
Einen Decorator als Eigenschaft definieren PHP-Code: public $tableDecorators = array( 'ViewHelper', 'Errors', array( array( 'data' => 'HtmlTag' ), array( 'tag' => 'td' ) ), array( 'label', array( 'tag' => 'td' ) ), array( array( 'row' => 'HtmlTag' ), array( 'tag' => 'tr', 'style' => 'vertical-align:top;' ) ), );
Unsere Form sowie die dazugehörigen Element in der init Methode initialisieren PHP-Code: $this->setAction( 'index/index' ) ->setMethod( 'post' ); $feld1= $this->createElement( 'textarea', 'feld1', array('rows' => 3, 'cols' => 40, 'readonly' => 'readonly' ) ); $feld1->setDecorators( $this->tableDecorators ); $this->addElement( $feld1 ); $feld2= $this->createElement( 'textarea', 'feld2', array('rows' => 3, 'cols' => 40 ) ); $feld2->setDecorators( $this->tableDecorators ); $this->addElement( $feld2 ); $feld2->setDecorators( $this->tableDecorators ); $this->addElement( $feld2 );
Jetzt nur noch die sachen in eine gruppr fassen, sodass wir das ergebnis
<tr><td><label></label><textarea ...></textarea></td></tr>
<tr><td><label></label><textarea ...></textarea></td></tr>
erhalten
Nun brauchen wir nur noch den table, sodass wir die gruppe jetzt an den table einfach anhängen PHP-Code: $this->addDisplayGroup(array( 'feld1', 'feld2', ),'testgruppe', array( 'tag' => 'table' ) ); $testgruppe = $this->getDisplayGroup( 'testgruppe' ); $testgruppe->setDecorators(array( 'FormElements', array( 'HtmlTag', array( 'tag' => 'table', 'class' => 'table')) ));
Sollte noch ein separater table benötigt werden einfach das gleich mit anderen Bezeichner definieren und zum schluss alle FormElements der Form hinzufügen. PHP-Code: $this->setDecorators(array( 'FormElements', array( 'HtmlTag', array( 'tag' => 'div', 'class' => 'div' ) ), 'Form' ));
Um den Standard decorator hier nicht zu verwenden, geben wir der Form einfach eoinen div mit in dem der table dann eingebettet werden soll
Okili Dokili
P.S. Wie ich den Errordecorator umgestalte bin ich gerade selber am herausfinden, also wenn jemand da weiterhelfen kann würde mich freuen... |
| |  | | |
| | | - Anzeige - |
| | [HaBo]
» Software Home
» Code Kitchen
»
ZEND_Form und die Decoratoren
| Themen-Optionen | | | | Ansicht | Linear-Darstellung |
Forumregeln
| Es ist Ihnen nicht erlaubt, neue Themen zu verfassen. Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten. Es ist Ihnen nicht erlaubt, Anhänge hochzuladen. Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten. HTML-Code ist aus. | | |
|