CakePHP beforeSave false 防止不刷新就提交

Posted

技术标签:

【中文标题】CakePHP beforeSave false 防止不刷新就提交【英文标题】:CakePHP beforeSave false prevents submission without refresh 【发布时间】:2014-01-27 16:42:05 【问题描述】:

我必须在这里遗漏一些简单的东西。我在 Cakephp 中使用 beforeSave 在保存数据之前对其进行一些测试。如果 beforeSave 返回 true,则保存数据并重定向用户。如果 beforeSave 返回 false,我不想重定向用户 - 而是只显示一个 Session->setFlash,其中包含有关如何纠正问题的说明。

这在第一次单击“提交”时有效,但随后的提交什么也不做。如果我刷新页面它工作正常,如果我将重定向添加回控制器上的同一页面它工作,但我想避免清空表单上的所有条目(或者必须设计一些其他方式来填充它为他们退出)。

是否有一些隐藏变量、会话 ID 或必须重置的东西?

谢谢!

【问题讨论】:

你能把 beforesave 里的代码和控制器里的代码粘贴一下吗? 我将我的代码剥离到 beforeSsave 中最基本的 If 语句,但没有运气,所以我猜它与不刷新页面有关,而不是 beforeSave 函数本身。例如,我可以从通用烘焙“添加”中删除重定向,它只允许您添加一条记录而不刷新。 【参考方案1】:

我认为我的整体逻辑有缺陷,考虑太多时间......我基本上需要多次提交表单而不刷新页面,这与CakePHP具体无关,更像是一个Ajax问题.听起来准确吗?

【讨论】:

是的,听起来很合理。但我敢打赌,你可以做到这一点,而无需刷新。您还没有发布任何代码,但是您在保存之前是否执行了$this->Mymodel->create()(否则您正在“更新”并且可能存在验证错误)。不过,ajax 方法对我来说似乎更干净。 实际上,我应该提到我专门删除了$this->Model->create();,以便它的行为类似于编辑。但是,是的,我会检查 Ajax。

以上是关于CakePHP beforeSave false 防止不刷新就提交的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 cakePHP 中将数据从 beforeSave() 传递到 afterSave()?

CakePHP 3 - beforeSave 回调在编辑时不起作用

BeforeSave CakePHP 数学

Cakephp 的 beforeSave() 不使用 $model::save() 保留新数据

CakePHP 数据在验证期间发生更改,并且 beforeSave 未随更改一起保存

CakePHP 验证错误未出现