Form::setData([]) 在发送电子邮件后删除联系表单的输入值在 CakePHP 中不起作用?
Form::setData([]) to remove input values of a contact form after sending email not working in CakePHP?
我参考文档 (https://book.cakephp.org/4/en/core-libraries/form.html) 在 Cakephp 4 中创建了一个联系表单。
我在发送电子邮件后删除输入值时遇到问题。
这是我的 ContactController.php :
<?php
namespace App\Controller;
use App\Controller\AppController;
use App\Form\ContactForm;
class ContactController extends AppController
{
public function index()
{
$contact = new ContactForm();
if ($this->request->is('post')) {
if ($contact->execute($this->request->getData())) {
$this->Flash->success('We will get back to you soon.');
$contact->setData([]); // I want to remove data in contact form after the email has been sent, but it doesn't work
} else {
$this->Flash->error('There was a problem submitting your form.');
}
}
$this->set('contact', $contact);
}
}
为什么代码中的 $contact->setData([]);
没有删除我联系表中的数据?
表单助手将更喜欢请求数据,例如来自表单提交的 POST 数据,否则在发生验证错误时输入总是会丢失。
提交成功后如果想再次显示表单页面,则需要重定向到当前页面,这就是PRG(Post-Redirect-Get)模式。
所以不要 $contact->setData([]);
,而是:
return $this->redirect(['action' => 'index']);
这也是您的烘焙控制器将为 add
和 edit
操作执行的操作。
另见
我参考文档 (https://book.cakephp.org/4/en/core-libraries/form.html) 在 Cakephp 4 中创建了一个联系表单。
我在发送电子邮件后删除输入值时遇到问题。
这是我的 ContactController.php :
<?php
namespace App\Controller;
use App\Controller\AppController;
use App\Form\ContactForm;
class ContactController extends AppController
{
public function index()
{
$contact = new ContactForm();
if ($this->request->is('post')) {
if ($contact->execute($this->request->getData())) {
$this->Flash->success('We will get back to you soon.');
$contact->setData([]); // I want to remove data in contact form after the email has been sent, but it doesn't work
} else {
$this->Flash->error('There was a problem submitting your form.');
}
}
$this->set('contact', $contact);
}
}
为什么代码中的 $contact->setData([]);
没有删除我联系表中的数据?
表单助手将更喜欢请求数据,例如来自表单提交的 POST 数据,否则在发生验证错误时输入总是会丢失。
提交成功后如果想再次显示表单页面,则需要重定向到当前页面,这就是PRG(Post-Redirect-Get)模式。
所以不要 $contact->setData([]);
,而是:
return $this->redirect(['action' => 'index']);
这也是您的烘焙控制器将为 add
和 edit
操作执行的操作。
另见