我遇到Laravel 5无法为浏览器中当前显示的视图显示正确URL的问题。
我的网站包含一系列视图,每个视图都包含一个表格,用户会被引导依次浏览这些视图,并按照特定的顺序提交我需要的所有信息。有四个这样的页面,除了URL显示之外,它们的一切都很好。
结果是:我们加载第一个视图,URL显示mypage/1。我们提交了表单,第二个视图加载完毕,但mypage/1仍在地址栏中。当我们在第二个视图中提交表单并加载第三个视图时,URL向前移动一次,在地址栏中显示mypage/2。通过这种方式,地址栏中的URL和实际显示的视图之间存在一页的滞后。
示例路线:
Route::get('createproject/start', 'CreateProjectController@start');
Route::post('createproject/start', 'CreateProjectController@sendToCreate');
Route::get('createproject/create', 'CreateProjectController@create');
Route::post('createproject/create', 'CreateProjectController@insertProject');
控制器功能示例:
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') }}">
遵循以下重定向模式。
protected function sendToCreate(Request $request)
{
return Redirect::to('createproject/create')->with('key',$value);
}
这是因为您使用的是POST
方法。如果URL在您的情况下非常重要,您可以使用GET
提交,但在这种情况下,您需要手动做很多事情。请在这里阅读更多信息。
如果URL不那么重要,我会保持一切原样。