【发布时间】:2016-03-28 20:58:48
【问题描述】:
我遇到了 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') }}">
【问题讨论】:
-
如果你想更新你的 URL,那么只需从控制器创建一个路由,而不是返回视图重定向到该路由。
-
也许你可以使用Session来存储数据view来查看。
-
谢谢克劳迪奥。我同意了你的建议。
标签: laravel laravel-5 laravel-5.2 laravel-routing