Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
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 ...

Antwort
Alt 25.11.10, 19:13   #1 (permalink)
 
Registriert seit: 30.03.07
ByteSurfer Leistung: Facit NTK
Likes: 17
Standard 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??

ByteSurfer ist offline   Mit Zitat antworten
Alt 25.11.10, 20:28   #2 (permalink)
 
Registriert seit: 12.06.08
Keci Leistung: Addierstift
Likes: 0
Standard

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'
)); 
Keci ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 25.11.10, 20:36   #3 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

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
beavisbee ist offline   Mit Zitat antworten
Alt 26.11.10, 07:24   #4 (permalink)
Themenstarter
 
Registriert seit: 30.03.07
ByteSurfer Leistung: Facit NTK
Likes: 17
Standard

Danke für Eure schnelle Hilfe!
Werde mir die links und den Snippet gleich mal verinnerlichen!
ByteSurfer ist offline   Mit Zitat antworten
Alt 26.11.10, 12:04   #5 (permalink)
Themenstarter
 
Registriert seit: 30.03.07
ByteSurfer Leistung: Facit NTK
Likes: 17
Standard

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???
ByteSurfer ist offline   Mit Zitat antworten
Alt 30.11.10, 07:31   #6 (permalink)
Themenstarter
 
Registriert seit: 30.03.07
ByteSurfer Leistung: Facit NTK
Likes: 17
Standard

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...
ByteSurfer ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » ZEND_Form und die Decoratoren
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61