2015-03-26 2 views
1

Я пытаюсь перенаправить маршрут на именованный маршрутизатор, содержащий переменную. Каким-то образом URL получает разложена на http://localhost:8000/users/reset_password?token=f3c6e64d3d5147fde8843af831ca4998 вместо http://localhost:8000/users/reset_password/f3c6e64d3d5147fde8843af831ca4998 (возражаете ?token=)Вставить переменную в именованный маршрут с помощью Redirect :: route()

Из-за этого несоответствия в 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' => '[email protected]')); 
Route::get('users/forgot_password', array('as' => 'users.forgot', 'uses' => '[email protected]')); 
Route::post('users/forgot_password', array('as' => 'users.forgot', 'uses' => '[email protected]')); 
Route::get('users/reset_password/{token}', array('as' => 'users.reset', 'uses' => '[email protected]')); 
Route::post('users/reset_password', array('as' => 'users.reset', 'uses' => '[email protected]')); 
Route::resource('users', 'UsersController'); 

Команда php artisan routes дает следующий вывод:

+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+ 
| Domain | URI         | Name    | Action       | Before Filters | After Filters | 
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+ 
|  | GET|HEAD users/confirm/{code}   | users.confirm | [email protected]  |    |    | 
|  | GET|HEAD users/forgot_password  | users.forgot  | [email protected]  |    |    | 
|  | POST users/forgot_password   | users.forgot  | [email protected]  |    |    | 
|  | GET|HEAD users/reset_password/{token} | users.reset  | [email protected]   |    |    | 
|  | POST users/reset_password    | users.reset  | [email protected]  |    |    | 
|  | GET|HEAD users      | users.index  | [email protected]   |    |    | 
|  | GET|HEAD users/create     | users.create  | [email protected]   |    |    | 
|  | POST users       | users.store  | [email protected]   |    |    | 
|  | GET|HEAD users/{users}    | users.show  | [email protected]    |    |    | 
|  | GET|HEAD users/{users}/edit   | users.edit  | [email protected]    |    |    | 
|  | PUT users/{users}      | users.update  | [email protected]   |    |    | 
|  | PATCH users/{users}     |     | [email protected]   |    |    | 
|  | DELETE users/{users}     | users.destroy | [email protected]   |    |    | 
+--------+---------------------------------------+------------------+----------------------------------+----------------+---------------+ 
+0

Пожалуйста, обновите свой код и покажите, как указать маршрут в файле '' routes.php'''. Тогда мы узнаем еще кое-что. –

+0

Обновлено вопрос –

ответ

1

Проблема в том, что у вас есть два маршрута с одинаковым именем. Либо ваши POST, и GET маршрутов имеют одинаковое имя users.reset. А вторая перезаписывает первое. Измените свое имя на маршрут POST, и с вами все будет в порядке.

-1

Я думаю, проблема в том, что вы также определяете имя переменной, вы o необходимо определить сами переменные в правильном порядке:

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

Именованные переменные очень, очень ОК. Есть определенно что-то еще, что вызывает проблемы. –

+0

Хм, ты прав. Я быстро проверил, и старый проект думал, что это проблема. –

Смежные вопросы