[英]route() helper function does not work with resource controller in laravel, but url() do work. Is it normal?
我有一个标准资源 controller 像这样注册:
Route::resource('/movies', \App\Http\Controllers\MovieController::class );
我检查了 php artisan route:list 并且我有获取“电影”路线。
但是在刀片模板中
<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() 方法不适用于资源 controller 是否可以,还是我的代码有问题?
既然 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() 将接受电影、电影/23。
route() 将为您提供 select 正确的方法(GET、POST、PATCH、DELETE),但是
url() 只会提供路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.