Laravel 8: 调用 route:list 时数组到字符串的转换
Laravel 8: Array to string conversion while calling route:list
我有一个 ArticleController
的资源控制器,我想在 web.php
中调用这个控制器,所以我编码:
use App\Http\Controllers\Admin\PanelController;
use App\Http\Controllers\Admin\ArticleController;
Route::namespace('Admin')->prefix('admin')->group(function(){
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', [ArticleController::class]);
});
然后我尝试使用命令 php artisan route:list
来检查路由,但我收到此错误消息:
ErrorException
Array to string conversion
那么为什么会出现这个错误,我该如何解决?
Route::resource
期望第二个参数是字符串,而不是数组。
Route::resource('articles', ArticleController::class);
删除组对 namespace
的调用,您不需要任何命名空间前缀,因为您使用完全限定的 Class 名称 FQCN 来引用控制器。
Route::prefix('admin')->group(function () {
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', ArticleController::class);
});
发生这种情况是因为您将 ArticleController 放在了方括号中。
删除方括号并保留如下:
use App\Http\Controllers\Admin\PanelController;
use App\Http\Controllers\Admin\ArticleController;
Route::namespace('Admin')->prefix('admin')->group(function(){
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', ArticleController::class);
});
或
use App\Http\Controllers\Admin\PanelController;
Route::namespace('Admin')->prefix('admin')->group(function(){
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', 'App\Http\Controllers\Admin\ArticleController');
});
资源方法需要对控制器的引用 class 作为第二个参数,但你给了它一个数组。
备注
如果您使用的是第一个代码段,请确保 class 正确 imported.Else 您将 运行 变成另一个错误。
我有一个 ArticleController
的资源控制器,我想在 web.php
中调用这个控制器,所以我编码:
use App\Http\Controllers\Admin\PanelController;
use App\Http\Controllers\Admin\ArticleController;
Route::namespace('Admin')->prefix('admin')->group(function(){
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', [ArticleController::class]);
});
然后我尝试使用命令 php artisan route:list
来检查路由,但我收到此错误消息:
ErrorException
Array to string conversion
那么为什么会出现这个错误,我该如何解决?
Route::resource
期望第二个参数是字符串,而不是数组。
Route::resource('articles', ArticleController::class);
删除组对 namespace
的调用,您不需要任何命名空间前缀,因为您使用完全限定的 Class 名称 FQCN 来引用控制器。
Route::prefix('admin')->group(function () {
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', ArticleController::class);
});
发生这种情况是因为您将 ArticleController 放在了方括号中。 删除方括号并保留如下:
use App\Http\Controllers\Admin\PanelController;
use App\Http\Controllers\Admin\ArticleController;
Route::namespace('Admin')->prefix('admin')->group(function(){
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', ArticleController::class);
});
或
use App\Http\Controllers\Admin\PanelController;
Route::namespace('Admin')->prefix('admin')->group(function(){
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', 'App\Http\Controllers\Admin\ArticleController');
});
资源方法需要对控制器的引用 class 作为第二个参数,但你给了它一个数组。
备注 如果您使用的是第一个代码段,请确保 class 正确 imported.Else 您将 运行 变成另一个错误。