J'essaye de rendre un formulaire Foundation 5 avec la validation de Abide en utilisant Zend Form. J'ai encore du mal à comprendre comment utiliser ViewHelpers et Decorators de Zend pour rendre le formulaire avec les divs requis par Foundation-- Je peux envelopper un élément de formulaire dans un div correctement classé, mais je ne peux pas mettre plusieurs éléments dans un <div class="row">
pour Exemple.Comment rendre les divs wrapper de Foundation 5 autour d'éléments de formulaire à l'aide de Zend Framework
Voici ce que je ne suis pas capable d'accomplir:
1) Attribution d'une classe parent de chaque élément de forme de div. Je peux attribuer à chaque div diviseur la même classe (voir mon code ci-dessous) mais pas à un élément individuel. Quand j'ai essayé d'ajouter un $element->setAttrib('class','small-##')
il l'a appliqué à l'élément <input />
, pas à ce div diviseur. Par exemple firstName
et lastName
devraient être class="small-6"
en company
sur la ligne suivante est class="small-12"
2) Mise en place des éléments de formulaire multiples dans une balise <div class="row">
et puis en faisant à nouveau pour la ligne de formulaire suivant. En ce moment je peux mettre chaque élément dans une rangée, mais je ne sais pas comment mettre plusieurs éléments dans le même <div class="row">
.
3) Dans les exemples de Foundation, les balises <label>
entourent la balise <input>
, mais Zend ferme l'étiquette avant l'entrée. Est-ce que cela compte?
Voici le code HTML que je veux rendre:
<form method="post" action="" enctype="multipart/form-data" data-abide>
<div class="row">
<div class="large-12 columns">
<div class="row">
<div class="small-2 columns">
<label for="display" class="inline">Display For: </label>
</div>
<div class="small-10 columns">
<input type="radio" name="display" value="0" id="displayEveryone" checked><label for="displayEveryone" class="inline">Everyone</label>
<input type="radio" name="display" value="999" id="displaySelf"><label for="displaySelf" class="inline">Only Me</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="small-6 columns">
<label>First Name
<input type="text" required class="contact" name="firstName" id="firstName" maxlength="25" autofocus="autofocus"/>
</label>
<small class="error">First name is required.</small>
</div>
<div class="small-6 columns">
<label>Last Name
<input type="text" required class="contact" name="lastName" id="lastName" maxlength="25"/>
</label>
<small class="error">Last name is required.</small>
</div>
</div>
<div class="row">
<div class="small-12 columns">
<label>Company or Affiliation
<input type="text" class="contact" name="company" id="company" maxlength="125"/>
</label>
</div>
</div>
<div class="row">
<div class="small-4 columns">
<label>Work Phone
<input type="text" class="contact" name="workPhone" id="workPhone" />
</label>
</div>
<div class="small-4 columns">
<label>Cell Phone
<input type="text" class="contact" name="cellPhone" id="cellPhone" />
</label>
</div>
<div class="small-4 columns">
<label>Home Phone
<input type="text" class="contact" name="homePhone" id="homePhone" />
</label>
</div>
</div>
</form>
Et voici le script de formulaire Zend J'ai actuellement et doit être changé:
class Application_Form_Contact extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$this->setName('addContact');
$this->setAttrib('enctype', 'multipart/form-data') ;
$id = new Zend_Form_Element_Hidden('contactID');$id->addFilter('Int');
$display= new Zend_Form_Element_Radio('display');
$display->setLabel('Display For: ')
->setRequired(true)
->addMultiOptions(array(0 => "Everyone", 999 => "Only Me"));
$fName = new Zend_Form_Element_Text('firstName');
$fName->setLabel('First Name: ')
->setRequired(true)
->setAttrib('maxlength', 25)
->setAttrib('autofocus', 'autofocus')
->addFilter('StripTags')
->addFilter('StringTrim');
$lName = new Zend_Form_Element_Text('lastName');
$lName->setLabel('Last Name: ')
->setRequired(true)
->setAttrib('maxlength', 25)
->addFilter('StripTags')
->addFilter('StringTrim');
$company = new Zend_Form_Element_Text('company');
$company->setLabel('Company: ')
->setRequired(false)
->setAttrib('maxlength', 125)
->addFilter('StripTags')
->addFilter('StringTrim');
$workPhone = new Zend_Form_Element_Text('workPhone');
$workPhone->setLabel('Work Phone: ')
->setRequired(false)
->setAttrib('class', 'small-4')
->addFilter('StripTags')
->addFilter('StringTrim');
$cellPhone = new Zend_Form_Element_Text('cellPhone');
$cellPhone->setLabel('Cell Phone: ')
->setRequired(false)
->setAttrib('class', 'small-4')
->addFilter('StripTags')
->addFilter('StringTrim');
$homePhone = new Zend_Form_Element_Text('homePhone');
$homePhone->setLabel('Home Phone: ')
->setRequired(false)
->setAttrib('class', 'small-4')
->addFilter('StripTags')
->addFilter('StringTrim');
$otherPhone = new Zend_Form_Element_Text('otherPhone');
$otherPhone->setLabel('Other Phone: ')
->setRequired(false)
->addFilter('StripTags')
->addFilter('StringTrim');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $display, $fName, $lName, $company, $workPhone, $cellPhone, $homePhone, $otherPhone, $submit));
$this->setElementDecorators(array(
'ViewHelper',
array('Description'),
array('Errors'),
array(array('data' => 'HtmlTag'), array('tag' => 'div', 'class'=>'small-6 columns')),
array('Label'),
array(array('row' => 'HtmlTag'), array('tag' => 'div', 'class'=> 'row'))
));
$submit->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag')),
array(array('row' => 'HtmlTag'))
));
$this->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'div', 'class'=>'small-12 columns')),
array('Form', array('data-abide'=>'data-abide'))
));
$view = $this->getView();
$formErrors = $view->getHelper('formErrors');
$formErrors->setElementStart('<small class="error">')
->setElementSeparator('')
->setElementEnd('</small>');
}
}
Merci pour votre aide.