我真的是ZF的新手,在用户提交表单(例如登录表单)后,谷歌搜索了一下装饰登录表单的方法。提交和处理后,如果它无效,我想在填写不正确的字段上方显示twitter bootstraps警报。
!isValid()
应该从那里生成表单来设置其他装饰器吗?答案 0 :(得分:1)
这些是我用来显示错误消息的方法:
我在所有字段上都没有更改标准的错误装饰器,以显示特定的消息(即:无效的电子邮件)
我还使用flashMessenger
来显示一般消息,如
Errors occured while validating the form:
* Email
* ...
flashMessenger
是一个具有等效视图助手的动作助手。 flashMessenger
是一跳会话消息,一旦显示就会自动从会话中清除
有关flashMessenger的更多信息。
答案 1 :(得分:1)
我倾向于将错误与其元素保持一致。但是,和你一样,我也更喜欢在顶部有一个表单级别的警报,告诉用户有一些东西要修复。
为此,我通常在控制器中添加一个标志:
if ($form->isValid($postData)){
// write to db and redirect
} else {
$this->view->hasFormError = true;
}
$this->view->form = $form;
然后在视图脚本中:
<?php if ($this->hasFormError): ?>
<!-- my alert box, using Bootstrap or whatever -->
<?php endif; ?>
<?= $this->form ?>
将FormError
装饰器添加到表单本身几乎肯定更加明智。它检查是否有任何表单元素有错误,然后呈现警报。然后你的控制器和你的视图脚本变得更加精简:
控制器:
if ($form->isValid($postData)){
// write to db and redirect
}
$this->view->form = $form;
查看脚本:
<?= $this->form ?>
但是当面对定义另一个装饰器,设置装饰器前缀,然后将其添加到表单时,我承认我通常便宜并使用控制器中的标志。
[原则上,我认为应用装饰器的整个想法应该是视图层的一部分,而不是表单定义本身的一部分。根据这种理念,我会保持表单未修饰,直到我们点击视图脚本,此时我们可以应用一些添加所有装饰器的视图助手。这是 - 在某种程度上修改的意义上 - ZF2的作用。但我从来没有时间过深地追求这条道路。]