2015-08-16 6 views
0

я следующий маршрут определяется:маршрута не существует, когда перенаправление на маршрут ресурсов [Laravel]

Route::resource('profile', 'ProfileController', ['except' => ['create', 'destroy']]); 

Однако, когда я пытаюсь и перенаправить к/{ID} метода профилей, используя следующие:

redirect()->route('profile', [$userId]); 

Я получаю следующее сообщение об ошибке:

InvalidArgumentException in UrlGenerator.php line 278: 
Route [profile] not defined. 

Что может быть проблема?

ответ

0

Метод маршрута принимает название маршрута в качестве первого аргумента. Все конкретные маршруты ресурсов получат свои собственные имена, однако не создано ни одного имени базового ресурса (профиля).

При запуске php artisan route:list вы увидите список всех маршрутов вместе с их именами. Для вас это должно выглядеть примерно так:

+--------+----------+-----------------------------------------+-----------------+---------------------------------------------------+------------+ 
| Domain | Method | URI          | Name   | Action           | Middleware | 
+--------+----------+-----------------------------------------+-----------------+---------------------------------------------------+------------+ 
|  | POST  | profile         | profile.store | App\Http\Controllers\[email protected]  |   | 
|  | GET|HEAD | profile         | profile.index | App\Http\Controllers\[email protected]  |   | 
|  | GET|HEAD | profile/create       | profile.create | App\Http\Controllers\[email protected]  |   | 
|  | PATCH | profile/{profile}      |     | App\Http\Controllers\[email protected]  |   | 
|  | PUT  | profile/{profile}      | profile.update | App\Http\Controllers\[email protected]  |   | 
|  | DELETE | profile/{profile}      | profile.destroy | App\Http\Controllers\[email protected] |   | 
|  | GET|HEAD | profile/{profile}      | profile.show | App\Http\Controllers\[email protected]  |   | 
|  | GET|HEAD | profile/{profile}/edit     | profile.edit | App\Http\Controllers\[email protected]  |   | 
+--------+----------+-----------------------------------------+-----------------+---------------------------------------------------+------------+ 

Так, так как кажется, что вы намерены показать профиль пользователя, это должно быть то, что вы хотите сделать:

redirect()->route('profile.show', [$userId]); 
+0

Это прекрасно. Я изменил это на ответ, поскольку метод '-> route()' кажется намного чище, чем 'перенаправление '('/profile/'. $ Id'). –

1

Попробуйте перенаправить этот путь

return redirect('profile/2'); 
+0

попытался это, но он, похоже, не перенаправляет вообще. Имеет ли значение, если я делаю это в методе индекса ProfileController? Я пытаюсь настроить его, чтобы/profile показывал зарегистрированный профиль пользователей и/profile/{id} показывает чужой. –

+0

На самом деле, да, этот код работал. Это была моя ошибка, поскольку я не возвращал перенаправление. –

+0

, если этот код работал, сделайте это голосованием. Это будет полезно для других –

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