php - 提交失败后如何装饰表单 ZF 1.12

标签 php zend-framework decorator zend-decorators

我对 ZF 真的是新手,在 Google 上搜索了一下,找到了一种在用户提交表单(例如登录表单)后装饰登录表单的方法。提交并处理后,如果无效,我想在填写不正确的字段上方显示 twitter bootstraps 警报。

  1. 我是否应该创建一个控制表单的模型,以及表单 !isValid() 是否应该从那里生成表单并设置其他装饰器?
  2. 我应该在 session 中设置所有内容并在渲染 View 和装饰后清除它们变量吗?
  3. 或者我应该使用其他神秘方法吗?

最佳答案

我倾向于使错误与其元素保持一致。但是,和您一样,我也更喜欢在顶部有一个表单级警报,向用户表明有一些问题需要修复。

为此,我通常在 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/

相关文章:

php - mysql中时间类型列字段数据更新

php - 保存网页时图像未保存!

decorator - 在 NestJS 中,如何在自定义方法装饰器中获取执行上下文或请求实例?

python - 用可调用实例装饰类函数

python - 如何在类中声明装饰器来装饰已经装饰的继承方法?

php - 使用 PHP 处理时 FFmpeg "Could not open file"错误信息

php - 如何为 PHP 和 Node 创建 Docker 镜像?

PHP - Redis/Memcachedb/Mongodb 或其他持久存储来存储计数器

zend-framework - 基于 Zend_Framework 的应用程序示例

php - 如何在 zend 中清理/释放数据库查询内存?