ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
254
254
EMPFEHLEN
-
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:
Die ZendForm Datei:HTML-Code:<td width="110"><strong>Firma</strong></td> <td width="218"> <?php echo $this->form->firm->renderViewHelper(); ?></td> </tr>
Das Feld ist required, leider wird das nicht "rot" angezeigt.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;
....
Im Controller sagt er jedoch bei
falsePHP-Code:$this->view->form->isValid($values)
Weiß jemand woran das liegen kann?
MFG
-
05.12.11 13:46 #2
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
Um deinem Element noch eine Klasse zu geben kannst du es mit einem "Options-Array" setzen.PHP-Code:$this->setDecorators(array());
// besser
$this->clearDecorators();
Warum du allerdings für das Feld eine Eigenschaft brauchst ist mir nicht schlüssig.
Im Dekorator kannst du ein Suffix für den Required-Status setzen, dies wird aber auch im Manual erklärt.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
Du kannst auch einfach das komplette Formular rendern, dann brauchst du nicht jedes Feld einzeln im View-Script ausgeben.
Die richtigen Dekoratoren sorgen dafür das sie wie gewünscht platziert werden.PHP-Code:echo $this->form;
Geändert von Maniac (05.12.11 um 13:49 Uhr)
Die Schweine von heute sind unsere Schnitzel von morgen!
-
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
-
05.12.11 14:13 #4
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:
Das is Anfangs ziemlich verwirrend mit den Dekoratoren, aber wenn man mal drin ist, dann ist es leicht damit zu arbeiten.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'
));
}
}
Die Schweine von heute sind unsere Schnitzel von morgen!
Ähnliche Themen
-
Zend Debugger als Zend Extension einbinden
Von NBOne im Forum PHPAntworten: 1Letzter Beitrag: 07.10.09, 16:28 -
Plötzlich Anzeige-Fehler in IE7!
Von joeboe im Forum HTML & XHTMLAntworten: 4Letzter Beitrag: 07.11.08, 17:02 -
Plötzlich Anzeige-Fehler in IE7!
Von joeboe im Forum CSSAntworten: 1Letzter Beitrag: 07.11.08, 16:39 -
Fehler anzeige unter IE
Von Esad im Forum CSSAntworten: 8Letzter Beitrag: 15.04.08, 16:22 -
Anzeige Fehler bei Dreamweaver MX
Von walter-markus im Forum HTML-EditorenAntworten: 6Letzter Beitrag: 16.02.04, 08:45





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren