【问题标题】:CakePHP manually attach validation error to formCakePHP 手动将验证错误附加到表单
【发布时间】:2011-01-31 19:14:05
【问题描述】:

我想完成一个相当“微妙”的任务,所以我会尽力解释。

我有一个新闻页面,在所有 cmets 下方有一个添加评论表单。在操作方面,在News->view() 视图中,我包含了一个包含Comment->add() 视图的元素。所以,当前发送新评论的流程是:进入新闻页面,填写评论表单,点击提交。然后将数据发送到CommentsControlleradd() 操作,在该操作中验证当前提交的数据。如果数据有效,它会保存评论并将我带回新闻项目页面。如果未通过验证,它会保留在 CommentsController add() 操作中,并与错误一起呈现 Comment->add() 视图。

现在,即使数据未验证,我也希望返回新闻项目页面并显示错误,并将错误 div 附加到添加评论表单。我怎样才能做到这一点?

也许我在创建一个包含与Comment->add() 相同的表单的元素时做错了,但我怎么能在News->view() 视图的底部包含Comment->add() 视图?

感谢您提供的任何帮助。

【问题讨论】:

    标签: validation cakephp forms


    【解决方案1】:

    如果您以蛋糕的方式进行操作,您可以使用 saveAll 从新闻控制器中保存(假设您的模型是相关的)。

    你只会有一个数组 ['News']['id'] = 123, ['Comment']...

    这将允许您留在新闻控制器中并以蛋糕的方式自动进行验证。您可以在 app_controller 中使用类似“comment”的方法,新闻控制器可以使用 $this->{$modelName}->saveAll(...)

    等代码继承该方法

    【讨论】:

    • 那么,您说我将 cmets 表单直接添加到 News->view() 视图中,当我按下提交时,使用 NewsController 上的 saveAll() 方法保存评论的数据?这会有点奇怪,因为传递给 saveAll() 的数组将只包含评论的数据......无论如何,我会试一试!谢谢!
    • 这就是为什么我说你应该将 ['News']['id'] = 123 添加到数组中,或者通过隐藏字段 input('News.id', array('value' => $id)) 或在控制器中,如 $this->data['News']['id'] = $this->data['Comment']['news_id'];
    • 我也尝试了您的方法(将添加评论视图直接发布到News->view() 视图中,并在News->view() 操作上添加了一些代码以检查添加评论表单中的数据是否有效),但它仍然没有显示任何东西。为什么这么难实现?我在很多网站上都看到过这个功能,但我找不到关于如何做到这一点的好参考。
    • 我也尝试了此处提供的 PersistentValidation stackoverflow.com/questions/4370208/…,但仍然无法正常工作。
    • 经过数小时的调试,我终于设法通过使用上面提到的组件来做到这一点。非常感谢您的回答和帮助!
    猜你喜欢
    • 2015-03-14
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多