在Zend中创建表单视图

min*_*gos 5 php model-view-controller zend-framework zend-form zend-view

有没有可靠的方法来创建自定义视图Zend_Form?装饰者非常神秘,并且以花哨的方式使用它们有时候非常复杂,我宁愿手工编写HTML.有没有办法做到这一点,仍然使表单与控制器完全配合(例如,调用$form->isValid()并期望一切正确验证)?如果是这样,是否有任何需要注意的注意事项(如关注验证错误显示)?

理想的解决方案是创建一个表单并传递元素数组(包含必要的数据,如名称,ID,输入类型以及呈现HTML所需的所有数据) - Zend Framework是否允许这样做?

[编辑]

echo我尝试在视图中添加此代码(一个简单的登录表单),而不仅仅是表单对象:

<?php
$userid = $this->form->getElement('userid');
$pass = $this->form->getElement('password');
$remember = $this->form->getElement('remember');
$submit = $this->form->getElement('submit');
?>
<form enctype="<?php echo $this->form->getEnctype(); ?>" method="<?php echo $this->form->getMethod(); ?>" action="<?php echo $this->form->getAction(); ?>" id="<?php echo $this->form->getId(); ?>">
name: <input type="text" id="<?php echo $userid->getId(); ?>" name="<?php echo $userid->getName(); ?>" /><br />
pass: <input type="password" id="<?php echo $pass->getId(); ?>" name="<?php echo $pass->getName(); ?>" /><br />
remember: <input type="checkbox" id="<?php echo $remember->getId(); ?>" name="<?php echo $remember->getName(); ?>" /><br />
submit: <input type="submit" id="<?php echo $submit->getId(); ?>" name="<?php echo $submit->getName(); ?>" value="<?php echo $submit->getValue(); ?>" />
</form>
Run Code Online (Sandbox Code Playgroud)

表单似乎工作正常并验证(虽然我没有重定向到我来自的页面 - 但我认为这是一个不同的问题,因为我通过了那个GET,而不是表单).这是可以接受的,还是我在不知情的情况下做了一些可怕的错误?

tak*_*hin 2

很大程度上取决于设计和最终布局。

您想在哪里显示验证错误?如何?通过错误装饰器?
您还想使用描述吗?
需要使用其他装饰器吗?

最好的方法似乎是只创建您自己的Zend_Form_Element_ThreadIcons元素。这就像对Zend_Form元素之一进行子类化并实现_render()返回所需 HTML 的自定义方法一样简单。您甚至可以在那里使用您自己的View实例。

然后,您可以将图标数组作为元素选项传递,并按照您需要的方式处理它。

如果您决定使用装饰器,您可能会发现此演示对于掌握该技术非常有用: