【问题标题】:Insert variable into named route using Redirect::route()使用 Redirect::route() 将变量插入命名路由
【发布时间】:2015-05-30 08:58:07
【问题描述】:

我正在尝试将路由重定向到包含变量的命名路由器。不知何故,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          |                |               |
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+

【问题讨论】:

  • 请更新您的代码并说明如何在routes.php 文件中指定路线。然后我们会知道更多。
  • 更新问题

标签: laravel laravel-4 laravel-routing


【解决方案1】:

问题是你定义了两个同名的路由。您的 POSTGET 路由具有相同的 users.reset 名称。第二个是覆盖第一个。把你的名字改成POST 路由就可以了。

【讨论】:

    【解决方案2】:

    我认为问题在于你还定义了变量的名称,你只需要按照正确的顺序定义变量本身:

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

    【讨论】:

    • 命名变量非常非常OK。肯定有其他原因导致了问题。
    • 嗯,你是对的。我很快检查了一下,旧项目认为这是问题所在。
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    相关资源
    最近更新 更多