簡體   English   中英

使用Redirect :: route()將變量插入命名路由

[英]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          |                |               |
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+

問題是您有兩個定義了相同名稱的路由。 您的POSTGET路由具有相同的users.reset名稱。 第二個覆蓋第一個。 更改您的POST路線名稱,一切都會好起來的。

我認為問題在於您還定義了變量的名稱,只需要按照正確的順序定義變量本身即可:

Redirect::route('users.reset', array($input['token'])
->withInput()
->with('error', $error_msg);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM