在Zend中创建表单视图

时间:2011-01-28 11:47:41

标签: php model-view-controller zend-framework zend-form zend-view

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

在理想的解决方案是创建一个形式,并且通过所述元件阵列(包含如姓名,ID和输入类型和所需要的数据所需的所有呈现HTML) - 不Zend框架允许这种

[编辑]

而不是仅仅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>

在形式似乎工作确定和验证(虽然我不重定向的我所来自的网页 - 但这是一个不同的问题,我相信,因为我传递通过GET,而不是形式)。这是可以接受的,还是我在不知情的情况下做了一些可怕的错误?

1 个答案:

答案 0 :(得分:2)

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

您想在哪里显示验证错误?怎么样?通过错误装饰器?
你想要使用描述吗?
你需要使用其他装饰器吗?

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

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

如果您决定使用装饰器,我发现这个演示文稿对掌握该技术非常有用: