Laravel 8:调用路由时数组到字符串的转换:列表
Posted
技术标签:
【中文标题】Laravel 8:调用路由时数组到字符串的转换:列表【英文标题】:Laravel 8: Array to string conversion while calling route:list 【发布时间】:2021-02-20 10:33:02 【问题描述】:我有一个资源控制器 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
来检查路线,但我收到以下错误消息:
错误异常
数组到字符串的转换
那么为什么会出现这个错误,我该如何解决呢?
【问题讨论】:
【参考方案1】:Route::resource
期待第二个参数的字符串,而不是数组。
Route::resource('articles', ArticleController::class);
删除组对namespace
的调用,您不需要任何命名空间前缀,因为您使用完全限定的类名 FQCN 来引用控制器。
Route::prefix('admin')->group(function ()
Route::get('/admin/panel', [PanelController::class, 'index']);
Route::resource('articles', ArticleController::class);
);
【讨论】:
我删除了控制器周围的阵列,但现在它显示:Target class [Admin\App\Http\Controllers\Admin\ArticleController] does not exist.
因为您要在路由文件中定义的任何控制器之前添加命名空间。您可以在 RouteServiceProvider 或您定义的路由组中检查命名空间
@ruwroveajaic ,我最近遇到了同样的问题,这可以通过将整个类路径放在像Route::resource('articles', 'App\Http\Controllers\ArticleController');
这样的字符串中来解决,假设您的控制器位于类似的路径中,因此您可以相应地更改路径.以上是关于Laravel 8:调用路由时数组到字符串的转换:列表的主要内容,如果未能解决你的问题,请参考以下文章
在 PHPUnit 中调用路由时如何在 Laravel 8 中模拟 Eloquent 模型
Laravel(4.1.24)将查询输出传递给视图时数组到字符串的转换
Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组