Laravel 使用Redirect::route()将变量插入命名路由
我试图将路由重定向到包含变量的命名路由器。不知怎的,URL被解析为http://localhost:8000/users/reset_password?token=f3c6e64d3d5147fde8843af831ca4998 而不是http://localhost:8000/users/reset_password/f3c6e64d3d5147fde8843af831ca4998 当心那张代币吗= 由于创建的URL不匹配,因此使用了不正确的路由 重定向::路由代码如下所示:Laravel 使用Redirect::route()将变量插入命名路由,laravel,laravel-4,laravel-routing,Laravel,Laravel 4,Laravel Routing,我试图将路由重定向到包含变量的命名路由器。不知怎的,URL被解析为http://localhost:8000/users/reset_password?token=f3c6e64d3d5147fde8843af831ca4998 而不是http://localhost:8000/users/reset_password/f3c6e64d3d5147fde8843af831ca4998 当心那张代币吗= 由于创建的URL不匹配,因此使用了不正确的路由 重定向::路由代码如下所示:
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 | | |
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+
我认为问题在于您还定义了变量的名称,您只需要按照正确的顺序定义变量本身:
Redirect::route('users.reset', array($input['token'])
->withInput()
->with('error', $error_msg);
问题是您有两个同名的路由定义。您的POST和GET路由都具有相同的users.reset名称。第二个是覆盖第一个。更改POST route的名称,您会很好。命名的变量非常非常好。肯定是其他原因造成了这些问题。嗯,你是对的。我很快检查了一下,老项目认为这就是问题所在。请更新您的代码,并说明如何在routes.php文件中指定路由。然后我们会知道更多。更新了问题