我一直在阅读,但无法在重定向中找到重定向和包含参数的方法。
此方法仅适用于Flash消息,因此我无法使用此功能。
return redirect('user/login')->with('message', 'Login Failed');
此方法仅适用于我routes.php
目前不使用别名的别名路由。
return redirect()->route('profile', [1]);
问题1
有没有办法在不定义路径别名的情况下使用路径?
return redirect('schools/edit', compact($id));
当我使用这种方法时,我收到此错误
InvalidArgumentException with message 'The HTTP status code "0" is not valid.'
我的路线下有这个:
Route::get('schools/edit/{id}', 'SchoolController@edit');
基于documentation,第二个参数用于http状态代码,这就是我收到上述错误的原因。我认为它的工作方式就像URL
外观URL::to('schools/edit', [$school->id])
正常工作。
问题2
解决此问题的最佳方法是什么(不使用路由别名)?我应该重定向到Controller操作吗?就个人而言,我不喜欢这种方法对我来说似乎太长了。
我也不喜欢使用别名,因为我已经在整个应用程序中使用了路径,而且我担心如果添加别名,它可能会影响现有路径?否?
答案 0 :(得分:0)
您是否观看了课程Illuminate\Routing\Redirector
?
您可以使用:
public function route($route, $parameters = [], $status = 302, $headers = [])
这取决于您创建的路线。如果您在app\Http\Routes.php
中创建如下:
获取('学校/编辑/ {id}',' SchoolController @ edit');
然后您可以通过以下方式创建路线:
redirect()->action('SchoolController@edit', compact('id'));
如果您想使用route()
方法,则需要为路线命名:
get('schools/edit/{id}', ['as' => 'schools.edit', 'uses' => 'SchoolController@edit']);
// based on CRUD it would be:
get('schools/{id}/edit', ['as' => 'schools.edit', 'uses' => 'SchoolController@edit']);
PS。如果您的学校控制器是基于资源(CRUD),您可以创建resource()
,它将创建基本路线:
Route::resource('schools', 'SchoolController');
// or
$router->resource('schools', 'SchoolController');
PS。别忘了在工匠那里看你创造的路线
答案 1 :(得分:0)
redirect("schools/edit/$id");
或(如果您愿意)
redirect("schools/edit/{$id}");
只需构建所需的路径。
'命名'路由不会改变任何URI。它允许您通过其名称在内部引用路由,而不必在任何地方使用路径。