2016-03-28 21 views
0

我遇到了Laravel 5无法显示当前正在浏览器中显示的视图的正确URL的问题。返回视图无法更新地址栏中的URL - Laravel 5

我的网站涉及一系列视图,每个视图都包含一个表单,并且用户通过这些视图连续并以特定顺序引导,以提交我需要的所有信息。有四个这样的页面,关于它们的一切工作都很好,除了URL显示。

会发生什么:我们加载第一个视图,URL显示mypage/1。我们提交表单并加载第二个视图,但mypage/1仍在地址栏中。当我们在第二个视图中提交表单并加载第三个视图时,URL会前进一次,以在地址栏中显示mypage/2。通过这种方式,地址栏中的网址与实际显示的视图之间存在一页的延迟。

举例路线:

Route::get('createproject/start', '[email protected]'); 
Route::post('createproject/start', '[email protected]'); 
Route::get('createproject/create', '[email protected]'); 
Route::post('createproject/create', '[email protected]'); 

典型控制器功能:

public function start() 
{ 
     return view('createproject/start'); 
} 

public function create() 
{ 
    return view('createproject/create'); 
} 

protected function sendToCreate(Request $request) 
{ 
    return view('createproject/create', array('proj_name' => $request->name, 
             'proj_area_main' => $request->area_main, 
             'proj_field' => $request->field, 
             'proj_creator' => $request->creator, 
             )); 
} 

示例表:

// On the start page, the form begins like this... 
<form class="form-horizontal" role="form" method="POST" action="{{ url('/createproject/start') }}"> 
// On the create page, the form begins like this... 
<form class="form-horizontal" role="form" method="POST" action="{{ url('/createproject/create') }}"> 
+1

如果你想更新你的URL,那么只需制作一个路由并从控制器,而不是返回视图重定向到该路由。 – Ali

+1

也许你可以使用会话来存储数据视图来查看。 –

+0

谢谢克劳迪奥。我接受了你的建议。 – Atlas

回答

1

按照下面的重定向模式。

protected function sendToCreate(Request $request) 
{ 
return Redirect::to('createproject/create')->with('key',$value); 
} 
+0

太好了。我最终选择了这个选项,我的理解和Claudio的一样。 – Atlas

1

那是因为你使用POST方法。如果URL在你的情况下非常重要,你可以使用GET提交,但在这种情况下,你需要手动做很多事情。请阅读更多关于它here

如果URL不是那么重要,我会保留所有的东西。

+0

谢谢。实际上URL并不重要,忽略URL是一个可行的选择。最后,我决定与Sunil和Claudio的建议一起使用带重定向的会话变量。 – Atlas