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 8 中使用 API 路由时返回错误

Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组

Laravel 5.8:从 javascript 但不是从浏览器调用路由时忽略中间件

laravel - ErrorException 数组到字符串的转换