【问题标题】:Laravel 8: Array to string conversion while calling route:listLaravel 8:调用路由时数组到字符串的转换:列表
【发布时间】: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 来检查路线,但我收到以下错误消息:

错误异常

数组到字符串的转换

那么为什么会出现这个错误,我该如何解决呢?

【问题讨论】:

    标签: php laravel routes laravel-8


    【解决方案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'); 这样的字符串中来解决,假设您的控制器位于类似的路径中,因此您可以相应地更改路径.
    猜你喜欢
    • 2021-07-16
    • 2021-07-16
    • 2018-08-03
    • 2021-02-21
    • 2021-05-03
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多