Zend Form ViewScript избавляется от dt и dd tag? - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть форма сборки с Zend с использованием ViewScript. Я подумал, что с помощью viewScript я избавлюсь от всех dd и dt и смогу использовать собственные html-теги в форме файла сценария формы (PatientScriptForm.phtml)?

Как использовать только теги div в файле сценария формы, а не автоматически созданные теги dt и dd? Спасибо !!

У меня есть очень простая форма с кодом ниже:

$age = new Zend_Form_Element_Text('age'); $age->setLabel('age');

$submit = new Zend_Form_Element_Submit('submit'); $submit->setValue($submit);

$this->addElement($age)->addElement($submit); 

$this->setDecorators(array ( array ('ViewScript',    array('viewScript' => 'patientScriptForm.phtml'))));

Ниже приведен мой viewскрипт PatientScriptForm.phtml

.
<form action="<?php echo $this->escape($this->element->getAction()) ?>" method="<?php echo $this->escape($this->element->getMethod()) ?>"> 
<div> 
<?php echo $this->element->age ?>
</div> 
<div>
<?php echo $this->element->submit ?>
</div> 
</form>

Ниже выводится браузер:

<form action="" method="post"> 
<div> 
<dt id="age-label">
<label for="age" class="optional">age</label>
</dt> 
<dd id="age-element"> 
<input type="text" name="age" id="age" value="" />
</dd>
</div> 
<div>
<dt id="submit-label"> 
</dt>
<dd id="submit-element"> 
<input type="submit" name="submit" id="submit" value="submit" />
</dd>
</div> 
</form>

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Проблема заключается в том, что, хотя для формы используется декоратор ViewScript для самого элемента формы, каждый из них имеет свою собственную схему декоратора по умолчанию.

Простым решением в вашем скрипте вида может быть

<?php echo $this->element->age->setDecorators(array('ViewHelper')) ?>
0 голосов
/ 30 октября 2013

Если в вашей форме слишком много добавляемых элементов

->setDecorators(array("ViewHelper"))

до конца каждого эхо-оператора в вашем скрипте вида не кажется таким убедительным, вы также можете сделать следующее, что имеет тот же эффект, что и вышеуказанный вызов для каждого элемента в вашей форме:

class Application_Form_Login extends Zend_Form {
   public function init() {
     // ...

     $this->setElementDecorators(
        array(
           "ViewHelper",
           "Errors"
        )
     );
   }
}
...