route() 辅助函数不适用于 laravel 中的资源控制器,但 url() 可以。正常吗?
route() helper function does not work with resource controller in laravel, but url() do work. Is it normal?
我有一个这样注册的标准资源控制器:
Route::resource('/movies', \App\Http\Controllers\MovieController::class );
我检查了 php artisan route:list 并且我有 get 'movies' 路由。
但是在blade模板中
<a href="{{ route('movies') }}" class="hover:text-gray-300">Movies</a>
不再有效。
而且只有
<a href="{{ url('movies') }}" class="hover:text-gray-300">Movies</a>
有效。
在那之前我有:
Route::get('/movies', function () {
return view('movies');
})->name('movies');
路由方法有效。
所以 url() 方法在任何地方都有效,而 route() 仅在特定情况下有效。
谁能告诉我这两种方法的主要区别是什么?
什么时候应该使用哪一个?
主要问题 - route() 方法不适用于资源控制器是否正常,还是我的代码有问题?
既然 url() 无处不在,我应该忘记 route() 方法不可靠吗?
如果您查看 php artisan route:list
的结果,您会看到几条路线,例如
| | POST | movies | movies.store | App\Http\Controllers\MovieController@store | web |
| | GET|HEAD | movies | movies.index | App\Http\Controllers\MovieController@index | web |
| | DELETE | movies/{movie} | movies.destroy | App\Http\Controllers\MovieController@destroy | web |
| | PUT|PATCH | movies/{movie} | movies.update | App\Http\Controllers\MovieController@update |
route() 和 url() 接受不同的值。
route() 将接受路线名称,例如movies.index、movies.destroy、movies.update 和
url() 将接受电影,movies/23.
route() 将为您 select 正确的方法(GET、POST、PATCH、DELETE)但是
url() 只会提供路径。
我有一个这样注册的标准资源控制器:
Route::resource('/movies', \App\Http\Controllers\MovieController::class );
我检查了 php artisan route:list 并且我有 get 'movies' 路由。
但是在blade模板中
<a href="{{ route('movies') }}" class="hover:text-gray-300">Movies</a>
不再有效。
而且只有
<a href="{{ url('movies') }}" class="hover:text-gray-300">Movies</a>
有效。
在那之前我有:
Route::get('/movies', function () {
return view('movies');
})->name('movies');
路由方法有效。
所以 url() 方法在任何地方都有效,而 route() 仅在特定情况下有效。
谁能告诉我这两种方法的主要区别是什么?
什么时候应该使用哪一个?
主要问题 - route() 方法不适用于资源控制器是否正常,还是我的代码有问题?
既然 url() 无处不在,我应该忘记 route() 方法不可靠吗?
如果您查看 php artisan route:list
的结果,您会看到几条路线,例如
| | POST | movies | movies.store | App\Http\Controllers\MovieController@store | web |
| | GET|HEAD | movies | movies.index | App\Http\Controllers\MovieController@index | web |
| | DELETE | movies/{movie} | movies.destroy | App\Http\Controllers\MovieController@destroy | web |
| | PUT|PATCH | movies/{movie} | movies.update | App\Http\Controllers\MovieController@update |
route() 和 url() 接受不同的值。
route() 将接受路线名称,例如movies.index、movies.destroy、movies.update 和
url() 将接受电影,movies/23.
route() 将为您 select 正确的方法(GET、POST、PATCH、DELETE)但是
url() 只会提供路径。