Barrett Conrad 的建议正是我所建议的。另外,请记住,您不需要使用表单对象来呈现您的表单。
您可以做的一件事是在您的视图脚本中创建一个表单,该表单具有与表单类同名的元素。
您的 HTML 表单:
<form action="/login/" method="post">
<fieldset>
<label for="username">Username:</label>
<input type="text" size="10" name="username" />
<label for="password">Password:</label>
<input type="password" size="10" name="password" />
<input type="submit" />
</fieldset>
</form>
你的班:
class LoginForm extends Zend_Form
{
public function init()
{
$username = $this->createElement('text','username');
$username->setRequired(true);
$this->addElement($username);
$password = $this->createElement('password','password');
$password->setRequired(true);
$this->addElement($password);
}
}
您的表单类反映了您的 HTML 表单,类中的每个元素都有自己的验证器和要求。回到您的操作中,您可以创建表单类的实例并针对该表单验证您的 post/get vars:
$form = new LoginForm();
if ($this->_request->isPost()) {
if ($form->isValid($this->_request->getParams())) {
// do whatever you need to do
} else {
$this->view->errors = $form->getMessages();
}
}
您可以使用此方法在一组表单的顶部显示错误消息。
这是一个基本示例,但它允许您完全控制表单的呈现方式,而无需花时间学习使用装饰器。在我看来,Zend_Form 的大部分优势在于它的验证和过滤属性。这给了你力量。像这样的解决方案的主要缺点是您的视图脚本 HTML 表单可能与您的表单类不同步。