【问题标题】:Laravel 8 subfolder ControllerLaravel 8 子文件夹控制器
【发布时间】:2021-08-25 11:24:54
【问题描述】:

我在 Controller 中创建了文件夹。但是 Laravel 给了

Target class [App\Http\Controllers\SAIDE\SaideMerchantController] does not exist.

错误

-->控制器

<?php

namespace App\Http\Controllers\SAIDE;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Schema;


class SaideMerchantController extends Controller
{
  
    
    public function home()
    {
      return view('backoffice.saide.maindashboard');
    }

      Route::get('/maindashboard','SAIDE\SaideMerchantController@home');
}

-->结束控制器

如何在文件夹中使用控制器?

【问题讨论】:

  • 你把控制器的命名空间改成App\Http\Controllers\SAIDE了吗?
  • 请包含控制器代码和控制器文件的保存位置
  • 您是否尝试过在路由中引用完整的命名空间? Route::get('/maindashboard','App\Http\Controllers\SAIDE\SaideMerchantController@home');

标签: laravel routes controller laravel-8 laravel-routing


【解决方案1】:

始终使用php artisan commands 创建controllersmodels,这样您就可以避免命名空间错误。如果你想在子文件夹中创建控制器然后运行

  php artisan make:controller SAIDE\SaideMerchantController

如果您手动创建了控制器,请确保检查控制器中的命名空间

<?php
namespace App\Http\Controllers\SAIDE;

然后在你的web.php

Route::get('/maindashboard/{id}',[\App\Http\Controllers\SAIDE\SaideMerchantController::class,"reservationlist"]);

你也可以

use App\Http\Controllers\SAIDE\SaideMerchantController;

Route::get('/maindashboard/{id}', [SaideMerchantController::class, 'reservationlist']);

文件夹和文件名可以使用标题大小写来代替全部大写字母

【讨论】:

    【解决方案2】:

    我们没有看到完整的路由文件,但是尝试将get方法更改为

    Rouge::get('/mainboard', [App\Http\Controllers\SAID\SaidMerchantController::class, 'home']);

    查看 Laravel 文档以了解版本 8 路由 https://laravel.com/docs/8.x/routing#basic-routing

    【讨论】:

    • 我在 Controller 中添加了这个。并解决我的问题。使用 App\Http\Controllers\Controller;
    猜你喜欢
    • 2021-07-06
    • 2013-09-21
    • 1970-01-01
    • 2015-05-31
    • 2015-09-14
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多