1

Я пытаюсь отобразить форму Foundation 5 с помощью функции Abide validation с использованием формы Zend. Я все еще пытаюсь полностью понять, как использовать Zend's ViewHelpers и Decorators для визуализации формы с помощью div, необходимых для Foundation. Я могу обернуть элемент формы в правильно классифицированный div, но я не могу поместить несколько элементов в <div class="row"> для пример.Как визуализировать обертки Foundation 5 в элементах формы с помощью Zend Framework

Вот что я не в состоянии выполнить:

1) Назначение класса для родительского DIV каждого элемента формы. Я могу назначить каждую оболочку div одним и тем же классом (см. Мой код ниже), но не отдельным элементом. Когда я попытался добавить $element->setAttrib('class','small-##'), он применил его к элементу <input />, а не к обертке div. Например firstName и lastName должно быть class="small-6" в то время как company на следующей строке class="small-12"

2) Размещение нескольких элементов формы в <div class="row"> тега, а затем делать это снова для следующего вида строки. Прямо сейчас я могу поместить каждый элемент в строку, но я не знаю, как поместить несколько элементов в один и тот же <div class="row">.

3) В примерах Foundation теги <label> обертывают тег <input>, но Zend закрывает метку перед входом. Это имеет значение?

Вот HTML я хочу сделать:

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

А вот форма сценария Zend я в настоящее время есть и должна быть изменена:

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>');  
    } 
} 

Спасибо за вашу помощь.

ответ

0

По умолчанию Декораторы Не нужно загружать

По умолчанию декораторы по умолчанию загружаются во время инициализации объекта. Вы можете отключить эту функцию, передав опцию «disableLoadDefaultDecorators» конструктору:

$element = new Zend_Form_Element('foo', 
    array('disableLoadDefaultDecorators' => true) 
); 

Создать вид и добавить свои элементы формы, как это:

<?php echo $this->YourFormObject->getElement('YourElementID'); ?> 

Я сделал это надеюсь, что это полезно для вас ...

 Смежные вопросы

  • Нет связанных вопросов^_^