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 回调在编辑时不起作用
Cakephp 的 beforeSave() 不使用 $model::save() 保留新数据