Спасибо за указание на мою ошибку :)

у меня есть этот названный маршрут:
Route::get('/', '[email protected]')->name('home');

Тогда в любом методе действия любого Контроллера; когда мне нужно перенаправить на названный маршрутГлавная; любой из этих операторов перенаправляет должным образом на предполагаемый маршрут:

return redirect('/');
return redirect()->route('home');
return redirect()->home();

Когда использовать каждый?
В чем различия?
Есть ли преимущества использования одного над другими?

 Sasa Blagojevic25 окт. 2017 г., 22:20
Это все разные способы сделать одно и то же. Используйте то, что вы предпочитаете. Подход именованных маршрутов хорош для удобства сопровождения, потому что если вы решите изменить маршруты позже, вам нужно будет сделать это только в одном месте, в файле или папке маршрутов, в зависимости от используемой вами версии Laravel.

Ответы на вопрос(4)

redirect()->home() это просто ярлык дляredirect()->route('home'), Исходный код можно увидетьВот.

Названные маршрутыв общем лучше, чем необработанные URL для удобства обслуживания.home маршрут не так уж и вероятен, чтобы изменить местоположение, но этоявляется Возможно, вы можете разместить приложение Laravel в подпапке или переместить домашнюю страницу из/ в/app освободить место для маркетинговой целевой страницы в корне.

 ceejayoz25 окт. 2017 г., 22:15
TL; DR: не имеет особого значения в этом конкретном примере.

она перенаправляет пользователя в домен плюс передаваемую вами строку.

HTTP: // локальный: 3000 + строка

Он также добавит / если вы забудете это, теперь, если вы называете свои маршруты, как вы сделали, вы можете назвать его по имени.
Преимущество использования именованных маршрутов в том случае, если вы хотите изменить URI, вы можете это сделать, не беспокоясь об изменении набора значений Ahref в вашем представлении, перенаправлениях в ваших контроллерах и т. Д.home() это метод от Laravel'sредиректор или жеredirect() поэтому я не думаю, что вы можете просто назвать именованный маршрут как метод.

redirect('/')

Он перенаправляет вас на базовый URL.

redirect()->route('home')

Перенаправляет на маршрут с именем home. Подробнее о названных маршрутахВот.

 redirect()->home();

Альтернативный способ перенаправления на именованный маршрут.Перенаправляет также на «домашний» маршрут. Он делает то же самое, что и выше, но с немного другим синтаксисом.

Я предпочел именованные маршруты над необработанными URL-адресами, потому что, если вы решите изменить URL-адрес позже, вы должны вносить изменения только в свой файл маршрутов.

 Sanjit Singh26 окт. 2017 г., 15:25
Спасибо за указание на мою ошибку :)
 ceejayoz25 окт. 2017 г., 23:55
redirect()->home() не является общим способом для перенаправления на именованный маршрут. Это очень специфический ярлык для маршрута с именемhome только. Я связался с исходным кодом для этого в своем ответе.
Решение Вопроса

документация упомянуть:

Когда вы вызываете помощника перенаправления без параметров, экземплярОсветить \ Routing \ редиректор возвращается, что позволяет вам вызывать любой метод в экземпляре Redirector. Например, чтобы сгенерировать RedirectResponse для именованного маршрута, вы можете использовать метод route

вы можете видеть в методах API (ссылка ниже), есть много методов, которые вы можете использовать, а также есть один конкретный вспомогательный метод.home() это просто ярлык для redirect () -> route ('home'), как выделено @ceejayoz.

Теперь поговорим оreturn redirect('/'); а такжеreturn redirect()->route('home'); оба из них перенаправляют правильно на предполагаемый маршрут, как вы сказалиНО второй действительно полезен, если в будущем.

Почему ?

Потому что, если вы хотите изменить структуру URL в файле маршрутов, все, что вам нужно изменить, это только маршрут, например:

Route::get('/', '[email protected]')->name('home');

Будет :

Route::get('/home_page', '[email protected]')->name('home');

и все перенаправления будут ссылаться на этот маршрут, и нет ничего, что вы должны изменить => все перенаправления будут работать отлично.

НО

Если вы решите использовать первый (я имею в видуreturn redirect('/');) затем после изменения маршрута вам нужно будет проанализировать все ваши контроллеры, чтобы проверить, есть ли перенаправления, использующие затем измененный маршрут и их изменение: p

Ваш ответ на вопрос