【问题标题】:Why package routes does not load the controller class?为什么包路由不加载控制器类?
【发布时间】:2016-10-19 11:45:15
【问题描述】:

我正在尝试在 laravel 5.2.* 中添加包,但包路由返回错误 Class FormController does not exist

我正在尝试什么

Package Directory > packages\js\form\src

包>提供者

namespace Js\Form;
use Illuminate\Support\ServiceProvider;
class FormServiceProvider extends ServiceProvider
{
    public function boot()
    {
    }

    public function register()
    {
        include __DIR__.'/routes.php';
        $this->app->make('Js\Form\FormController');
    }
}

包>控制器

namespace Js\Form;  
use App\Http\Controllers\Controller;
use Carbon\Carbon;
class FormController extends Controller
{
    public function index()
    {
        echo 'test';
    }
}

包>作曲家

{
    "name": "js/form",
    "description": "this is form",
    "type": "project",
    "license": "xyz",
    "minimum-stability": "dev",
    "require": {}
}

主要作曲家

"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/",
            "Js\\Form\\": "packages/Js/Form/src"
        }
    }

包裹>路线

Route::get('/contactus', 'FormController@index');

在 config/app.php 中

Js\Form\FormServiceProvider::class,

我也执行了这个命令 composer dump-autoload 然后试图打开这个 url http://localhost/project/public/index.php/contactus 但它显示以下错误。

Class FormController does not exist

谁能指导我哪里有问题可以解决。如果有人指导我,我将不胜感激。谢谢你

【问题讨论】:

  • 我假设错误来自路由器功能。您只需指定 FormController,它就会在默认位置查找(app/http/controllers),但这不是表单控制器所在的位置
  • @tam 我同意你的观点,问题来自路由,因为我通过添加错误的控制器名称来检查它。那么我该如何解决。你有什么想法吗?
  • 你能在 CLI 中试试这个命令 php artisan config:clear 吗?有时它会从缓存中获取配置。
  • @RonakDattani 我按照你的指示做了,但是当我刷新时它仍然显示相同的错误。

标签: laravel laravel-5


【解决方案1】:

错误来自这一行:

Route::get('/contactus', 'FormController@index');

默认情况下,路由器会查找与App\Http\Controllers 相关的控制器,但这不是您的FormController 所在的位置。

要解决此问题,您需要指定FormController 相对于App\Http\Controllers 的位置相对,或者提供绝对 路径。

例如,如果您的 FormController 被命名为 App\FormController,您可以这样写:

Route::get('/contactus', '\App\FormController@index');

所以,在你的情况下,它会是:

Route::get('/contactus', '\Js\Form\FormController@index');

【讨论】:

  • 哇,太棒了,我跟着答案和它的工作。非常感谢 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多