保存后,在控制器中重置实体(或创建新的空实体)

时间:2015-06-23 14:45:07

标签: cakephp cakephp-3.0

如果保存后没有重定向,如何在保存之后重置实体(如果你停留在同一个动作/页面上)?

示例:我有一个列出所有用户的页面。在同一页面上有添加新用户的表单。

public function index() {
   $this->set('listallusers', $this->Users->find('all'));
   $user = $this->Users->newEntity();
   if ($this->request->is('post')) {
     $user = $this->Users->patchEntity($user, $this->request->data );
     if ( $this->Users->save($user) ) {
       $this->Flash->succeed('User saved.');
       // line 8
     } else {
       $this->Flash->error('There is an error.');
     }
   }
   $this->set('user', $user);
 }

我尝试在第08行的Flash消息后添加$user = '';,以及$user = $this->Users->newEntity();

但是页面上的表单仍然包含/显示上次保存的用户的值(我希望在保存成功时有一个空表单。)

1 个答案:

答案 0 :(得分:0)

我不知道如何将评论标记为我的问题的答案,所以我引用它:

  

您不只是停留在同一页面上。保存是POST的结果,因此您需要在之后进行GET(重定向)以遵循PRG模式,您必须遵循PRG模式有几个原因以避免出现其他问题。然后你的问题就解决了。所以总是重定向,在你的情况下再次重定向到相同的URL。问题解决了 - 按设计。 - 标记

谢谢@mark