Как я могу добавить форму в свой layout.phtml?
Я хотел бы иметь форму поиска и форму входа, которые сохраняются во всех формах на моем сайте.
Как я могу добавить форму в свой layout.phtml?
Я хотел бы иметь форму поиска и форму входа, которые сохраняются во всех формах на моем сайте.
У меня есть сообщение в блоге, объясняющее это: http://blog.zero7ict.com/2009/11/how-to-create-reusable-form-zend-framework-zend_form-validation-filters/
В папке приложения создайте папку форм
Это пример формы:
<?php
class Form_CreateEmail extends Zend_Form
{
public function __construct($options = null)
{
parent::__construct($options);
$this->setName('createemail');
$title = new Zend_Form_Element_Text('title');
$title->setLabel('Subject')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$info = new Zend_Form_Element_Textarea('info');
$info->setLabel('Email Content')
->setAttribs(array('rows' => 12, 'cols' => 79));
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($title, $info, $submit));
}
}
?>
Затем вы можете вызвать его со своего контроллера следующим образом:
$form = new Form_CreateEmail();
$form->submit->setLabel('Add');
$this->view->form = $form;
И отобразите его с вашего просмотра, используя
echo $this->form;
Надеюсь это поможет.
Изменить: если вы хотите, чтобы это было включено на каждую страницу, вы можете создать новый вспомогательный файл
в папке просмотров создайте папку помощников и создайте файл loginHelper.php
class Zend_View_Helper_LoginHelper
{
function loginHelper()
{
$form = new Form_CreateEmail();
$form->submit->setLabel('Add');
return = $form;
}
}
Это может быть выведено из вашего макета, используя:
<?php echo $this->LoginHelper(); ?>
init()
существует, поэтому вам не нужно __construct($options)
перегружать.
- person chelmertz; 03.11.2009
В вашем макете просто сделайте:
$form = new Loginform();
echo $form->render();
Вам просто нужно убедиться, что вы указали Контроллер / Действие для формы для POST, чтобы он не отправлял POST на любой Контроллер, на котором вы сейчас находитесь, что является поведением по умолчанию.