这些路线有什么区别?

What is the difference between those routes?

我为更新配置文件逻辑定义路由,当我使用第一个逻辑时它不起作用,但使用第二个逻辑可以正常工作。所以我不知道它们之间有什么区别。

1. Route::post('/profile', 'ProfileController@update');
2. Route::post('/profile', 'ProfileController@update')->name('profile');

他们之间唯一的区别,名字, 所以如果你在表单操作中输入类似 {{ route('profile') }} 的内容,你的意思是:转到具有名称配置文件的路由。

阅读 this 了解更多详情。

第二个是'named route'。它允许您通过名称引用您的路线。

Laravel 5.7 Docs - Routing - Named Routes

嗯,明显的区别是添加了“->name('profile')”命名路由到您的第二行。你用 laravel-5.7 标记了这个 post 所以我链接了这个版本的文档:https://laravel.com/docs/5.7/routing#named-routes

在我看来,您的 ProfileController 的更新函数中可能有一些逻辑,如下所示:

if ($request->route()->named('profile')) {
    //
}

这会改变请求的结果。希望这对您有所帮助,此致。

名称为 Route::post('/profile', 'ProfileController@update')->name('profile');

的路线

可以在 blade 中使用 {{route('profile')}}

访问

而另一个只能使用 url() 访问。例如

{{url('/profile')}}