我对 ZF 真的是新手,在 Google 上搜索了一下,找到了一种在用户提交表单(例如登录表单)后装饰登录表单的方法。提交并处理后,如果无效,我想在填写不正确的字段上方显示 twitter bootstraps 警报。
- 我是否应该创建一个控制表单的模型,以及表单
!isValid()
是否应该从那里生成表单并设置其他装饰器? - 我应该在 session 中设置所有内容并在渲染 View 和装饰后清除它们变量吗?
- 或者我应该使用其他神秘方法吗?
最佳答案
我倾向于使错误与其元素保持一致。但是,和您一样,我也更喜欢在顶部有一个表单级警报,向用户表明有一些问题需要修复。
为此,我通常在 Controller 中添加一个标志:
if ($form->isValid($postData)){
// write to db and redirect
} else {
$this->view->hasFormError = true;
}
$this->view->form = $form;
然后在 View 脚本中:
<?php if ($this->hasFormError): ?>
<!-- my alert box, using Bootstrap or whatever -->
<?php endif; ?>
<?= $this->form ?>
几乎可以肯定,向表单本身添加 FormError
装饰器会更加灵活。它检查是否有任何表单元素有错误,然后呈现警报。然后你的 Controller 和 View 脚本变得更加精简:
Controller :
if ($form->isValid($postData)){
// write to db and redirect
}
$this->view->form = $form;
查看脚本:
<?= $this->form ?>
但是当面对定义另一个装饰器、设置装饰器前缀,然后将其添加到表单时,我承认我通常会省钱并使用 Controller 内标志。
[原则上,我认为应用装饰器的整个想法应该是 View 层的一部分,而不是表单定义本身的一部分。根据这种理念,我将保持表单不被装饰,直到我们点击 View 脚本,此时我们可以应用一些添加所有装饰器的 View 助手。从某种意义上来说,这就是 ZF2 所做的事情。但我从来没有时间太深入地追求这条道路。]
关于php - 提交失败后如何装饰表单 ZF 1.12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509567/