【问题标题】:Laravel 8: Array to String conversion on route registerLaravel 8:路由寄存器上的数组到字符串转换
【发布时间】:2021-07-16 06:09:07
【问题描述】:

有什么办法可以在 laravel 8 中定义路由组的名称吗?

我正在尝试为卖家构建前往订单管理网站的路线,以下是我在 web.php

中的路线列表
use App\Http\Controllers\Seller\OrderController;

Route::group(['prefix' => 'seller', 'middleware' => 'auth', 'as' => 'seller.', 'namespace' => 'Seller'], function () {

    Route::redirect('/','seller/orders');

    Route::resource('/orders',  [OrderController::class]);
});

错误

ErrorException 

Array to string conversion

at C:\wamp64\www\my-project\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php:416
412▕     protected function getResourceAction($resource, $controller, $method, $options)
413▕     {
414▕         $name = $this->getResourceRouteName($resource, $method, $options);
415▕
➜ 416▕         $action = ['as' => $name, 'uses' => $controller.'@'.$method];
417▕
418▕         if (isset($options['middleware'])) {
419▕             $action['middleware'] = $options['middleware'];
420▕         }

1   C:\wamp64\www\my-project\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php:416
    Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Array to string conversion", "C:\wamp64\www\my-project\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php", ["orders", "index", "orders.index"])

2   C:\wamp64\www\my-project\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php:189
    Illuminate\Routing\ResourceRegistrar::getResourceAction("orders", "index", [])

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    更改以下行

    use locationcontroller/OrderController as OrderController;
    
    Route::resource('/orders',  OrderController::class);
    

    【讨论】:

      【解决方案2】:

      它给你这个错误的原因是因为你将 `OrderController 作为一个数组传递:

      Route::resource('/orders',  [OrderController::class]);
      

      您可能将regular routes 的语法与resource controllers 的语法混淆了。

      对于资源控制器,您必须将类名作为字符串传递:

      Route::resource('/orders',  OrderController::class);
      

      这对我有用。所以@Iyathurai Iyngaran

      【讨论】:

        【解决方案3】:

        更改以下行

        Route::resource('/orders',  [OrderController::class]);
        

        Route::resource('/orders',  OrderController::class);
        

        【讨论】:

          猜你喜欢
          • 2021-02-20
          • 2021-07-16
          • 2021-02-21
          • 2018-08-03
          • 2016-07-08
          • 1970-01-01
          • 1970-01-01
          • 2016-09-02
          相关资源
          最近更新 更多