[英]How to return a redirect to a named route with a variable in Laravel 9?
[英]Insert variable into named route using Redirect::route()
我正在嘗試將路由重定向到包含變量的命名路由器。 以某種方式將URL解析為http://localhost:8000/users/reset_password?token=f3c6e64d3d5147fde8843af831ca4998
而不是http://localhost:8000/users/reset_password/f3c6e64d3d5147fde8843af831ca4998
(請注意?token=
)
由於所創建的URL中的此不匹配,因此使用了錯誤的路由。
Redirect::route()
代碼如下所示:
return Redirect::route('users.reset', array('token'=>$input['token']))
->withInput()
->with('error', $error_msg);
我的路線定義如下:
Route::get('users/confirm/{code}', array('as' => 'users.confirm', 'uses' => 'UsersController@getConfirm'));
Route::get('users/forgot_password', array('as' => 'users.forgot', 'uses' => 'UsersController@getForgot'));
Route::post('users/forgot_password', array('as' => 'users.forgot', 'uses' => 'UsersController@postForgot'));
Route::get('users/reset_password/{token}', array('as' => 'users.reset', 'uses' => 'UsersController@getReset'));
Route::post('users/reset_password', array('as' => 'users.reset', 'uses' => 'UsersController@postReset'));
Route::resource('users', 'UsersController');
php artisan routes
命令給出下一個輸出:
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+
| | GET|HEAD users/confirm/{code} | users.confirm | UsersController@getConfirm | | |
| | GET|HEAD users/forgot_password | users.forgot | UsersController@getForgot | | |
| | POST users/forgot_password | users.forgot | UsersController@postForgot | | |
| | GET|HEAD users/reset_password/{token} | users.reset | UsersController@getReset | | |
| | POST users/reset_password | users.reset | UsersController@postReset | | |
| | GET|HEAD users | users.index | UsersController@index | | |
| | GET|HEAD users/create | users.create | UsersController@create | | |
| | POST users | users.store | UsersController@store | | |
| | GET|HEAD users/{users} | users.show | UsersController@show | | |
| | GET|HEAD users/{users}/edit | users.edit | UsersController@edit | | |
| | PUT users/{users} | users.update | UsersController@update | | |
| | PATCH users/{users} | | UsersController@update | | |
| | DELETE users/{users} | users.destroy | UsersController@destroy | | |
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+
問題是您有兩個定義了相同名稱的路由。 您的POST
和GET
路由具有相同的users.reset
名稱。 第二個覆蓋第一個。 更改您的POST
路線名稱,一切都會好起來的。
我認為問題在於您還定義了變量的名稱,只需要按照正確的順序定義變量本身即可:
Redirect::route('users.reset', array($input['token'])
->withInput()
->with('error', $error_msg);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.