tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
254
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    =fire= =fire= ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Beiträge
    127
    Hallo,

    ich benutze Zend um ein Formular darzustellen. Ich möchte sobald ein Fehler in dem Formular ist das das input die class="red" bekommt.

    Das Formular sieht so aus:

    HTML-Code:
    <td width="110"><strong>Firma</strong></td>
    <td width="218">
    <?php echo $this->form->firm->renderViewHelper(); ?></td>
    </tr>
    Die ZendForm Datei:

    PHP-Code:
    class Application_Form_Registration_Step4 extends Zend_Form
    {

        public 
    $firm;


        public function 
    init ()
        {
            
    parent::init();

            
    $this->setDecorators(array());

            
    $this->firm = new Zend_Form_Element_Text('firm');
            
    $this->firm->setRequired(true);
            
    $this->firm->setAttrib('style''width:170px');
            
    $elements[] = $this->firm;

    .... 
    Das Feld ist required, leider wird das nicht "rot" angezeigt.

    Im Controller sagt er jedoch bei
    PHP-Code:
    $this->view->form->isValid($values
    false

    Weiß jemand woran das liegen kann?

    MFG
     

  2. #2
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Mal abgesehen davon das du den Aufruf für die Parent-Mothode "init()" nicht brauchst, da die init-Methode nur ein Wrapper ist zum überschreiben.

    Die Firma Zend verwendest du sichelrich nicht, sondern das Zend-Framework

    PHP-Code:
    $this->setDecorators(array());
    // besser
    $this->clearDecorators(); 
    Um deinem Element noch eine Klasse zu geben kannst du es mit einem "Options-Array" setzen.
    Warum du allerdings für das Feld eine Eigenschaft brauchst ist mir nicht schlüssig.

    PHP-Code:
    $this->firm = new Zend_Form_Element_Text('feldname', array('class'=>'myClass'));

    // besser
    $this->addElement('text','feldname', array('class'=>'myClass'));

    $Element $this->getElement('feldname')
         ->
    setRequired();
    // oder weitere filter und validierungen noch hinzufügen 
    Im Dekorator kannst du ein Suffix für den Required-Status setzen, dies wird aber auch im Manual erklärt.
    Du kannst auch einfach das komplette Formular rendern, dann brauchst du nicht jedes Feld einzeln im View-Script ausgeben.
    PHP-Code:
    echo $this->form
    Die richtigen Dekoratoren sorgen dafür das sie wie gewünscht platziert werden.
    Geändert von Maniac (05.12.11 um 13:49 Uhr)
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  3. #3
    =fire= =fire= ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Beiträge
    127
    Hallo,

    wo finde ich denn die Dekoratoren? Das Problem ist bei dem einen Formular funktioniert das bei einem weiteren nicht, habe schon die Skripte verglichen.

    MFG
     

  4. #4
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Die Dekoratoren findest kannst du für das Formular setzen und für die Elemente eigens.
    Wie das genau geht steht im Manual des Zend-Freamworks.

    Ich bevorzuge Listen-ELemente in Formularen, umrandet von einem Fieldset.

    Das würde dann ungefähr so aussehen:

    PHP-Code:
    class MyForm extends Zend_Form{
       public function 
    init(){
       
    $decorators = array(
                    array(
    'ViewHelper'), 
                    array(
    'Errors'),
                    array(
    'Label', array('requiredSuffix' => ' *')),
                    array(
    'HtmlTag', array('tag' => 'li')),
                );

        
    $this->addElement('text','feldname');
        
    $this->getElement('feldname')
                           ->
    setDecorators($decorators)
                           ->
    setOptions(array('class'=>'myClass'))
                           ->
    setRequired();


        
    // formular dekoratoren
       
    $this->setDecorators(array(
                    
    'FormElements',
                    array(
    'HtmlTag', array('tag' => 'ul')),
                    array(array(
    'DivTag' => 'HtmlTag'), 
                        array(
    'tag' => 'div''id' => 'kontaktDiv')),
                    array(
    'Fieldset',array('legend'=>'Kontaktformular ')),           
                    
    'Form'
                
    ));
       }

    Das is Anfangs ziemlich verwirrend mit den Dekoratoren, aber wenn man mal drin ist, dann ist es leicht damit zu arbeiten.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 07.10.09, 16:28
  2. Plötzlich Anzeige-Fehler in IE7!
    Von joeboe im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 07.11.08, 17:02
  3. Plötzlich Anzeige-Fehler in IE7!
    Von joeboe im Forum CSS
    Antworten: 1
    Letzter Beitrag: 07.11.08, 16:39
  4. Fehler anzeige unter IE
    Von Esad im Forum CSS
    Antworten: 8
    Letzter Beitrag: 15.04.08, 16:22
  5. Anzeige Fehler bei Dreamweaver MX
    Von walter-markus im Forum HTML-Editoren
    Antworten: 6
    Letzter Beitrag: 16.02.04, 08:45