Laravel:发布后加载视图

The*_*ude 3 php post view laravel

在Codeigniter中,我过去在发布数据后调用视图函数。像下面

例如:我有一个show_products()函数,它将显示产品列表。当用户添加新产品时,我会将数据发布到add_product()函数中。如果该过程成功,我将不会重定向到产品页面,而是将显示函数加载到add_product()中,如下所示:

//Inside the add_product() function
if(success){

   $this->show_products();

}
Run Code Online (Sandbox Code Playgroud)

我认为,没有必要重新加载页面。由于我们已经在发布函数中,因此我们可以在数据库插入后立即设置视图。

但是在laravel中,我看到人们在发布数据后进行重定向。

例如:

//Inside the postProduct() function
if(success){

   return Redirect::to('products');

}
Run Code Online (Sandbox Code Playgroud)

我试过了;

//Inside the postProduct() function
if(success){

   $this->getIndex();// this is my product display function

}
Run Code Online (Sandbox Code Playgroud)

但这没用。

通过在post函数中加载视图而无需每次都重定向,是否有好处?

如果是这样,我如何用laravel达到相同的目的?

非常感谢!

The*_*pha 5

它不是关于Laravel,而是关于一种正确或正确的处理方式。换句话说,在成功提交表单后,重定向到另一个路由/页面是一种好的编程习惯。

即使是CodeIgniter平淡无奇,Php我也喜欢这种方法,并鼓励其他开发人员这样做。因此,问题是为什么这种重定向比直接从同一请求中调用另一个方法来显示另一个视图/页面更好?

这是过程的生命周期:

  1. 您将表单发布到路线/操作页面。
  2. 您验证提交的数据,并在成功验证后将提交的数据插入到数据库中,否则您将在错误和旧用户输入的情况下重定向回该表单。

所以。假设您已经提交了一个表单,并成功将数据保存到数据库中。保存后,您将执行以下操作:

return View::make('...')->with('success', 'Data saved!');
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您的用户可以success在屏幕上看到该消息,但是如果用户f5从键盘上按该键到refresh页面(可能是偶然),该表单将再次提交给同一操作,整个过程将是再次重复。

因此,如果您在提交表单后进行了重定向,则refreshing该页面不会再次对该表单进行任何请求。

刷新后表单上的 Google搜索结果将重新提交。,检查链接,可能是第一个/第二个,提交表单后,您将对问题和重定向的好处有更好的了解。