站点范围Zend_Form

时间:2009-10-05 15:44:12

标签: php zend-framework forms zend-form

如何在layout.phtml中添加表单?

我希望能够在我网站上的每个表单中都有一个搜索表单和一个登录表单。

2 个答案:

答案 0 :(得分:6)

我有一篇博文解释: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;

希望这有帮助。

编辑:如果您希望将其包含在每个页面中,您可以创建新的帮助文件

在您的views文件夹中创建一个helpers文件夹并创建一个loginHelper.php文件

class Zend_View_Helper_LoginHelper
{
    function loginHelper()
    {

$form = new Form_CreateEmail();
        $form->submit->setLabel('Add');
        return = $form;

    }
}

可以使用以下方法从布局输出:

<?php echo $this->LoginHelper(); ?>     

答案 1 :(得分:2)

在您的布局中,只需执行:

$form = new Loginform();
echo $form->render();

您只需确保为表单指定一个控制器/操作以进行POST,这样就不会POST到您当前所在的控制器,这是默认行为。