laravel上的以下路线有什么区别?
Route::resource('posts', 'Admin\PostsController');
Route::resource('posts', Admin\PostsController::class);
我应该何时使用,应该使用哪一个?
感谢。
答案 0 :(得分:1)
它们完全不同。
' PostsController'是字符串' PostsController'
Admin\PostsController::class
很可能是字符串' App \ Http \ Controllers \ Admin \ PostsController'
如果您使用第二个,它将最终查找App\Http\Controllers\App\Http\Controllers\Admin\PostsController
,因为Laravel已根据App\Http\Controllers
中设置的内容假设控制器的命名空间为RouteServiceProvider
。
当你只使用' PostsController' Laravel以App\Http\Controllers\PostsController
结束。
这是默认情况下的设置方式。 (假设您没有调整所用命名空间的组)
答案 1 :(得分:0)
两者之间的区别在于,第一个是在与您指定路径的文件相同的范围内查找Controller。第二个将在PostsController
命名空间中查找名为Admin
的控制器。
如果这些位置是同一个,两条路线之间没有区别。
在回答问题的第二部分时,您选择使用哪一部分取决于您。我个人使用路由组来处理我的命名空间(等等):
Route::group([
'namespace' => 'Admin',
], function () {
Route::resource('posts', 'PostsController');
}