Php 如何在codeigniter v4的子目录中创建控制器?

Php 如何在codeigniter v4的子目录中创建控制器?,php,codeigniter,frameworks,codeigniter-4,Php,Codeigniter,Frameworks,Codeigniter 4,在codeigniter v3中,控制器中的子目录工作正常。但在codeigniter v4中,这不起作用 文件夹结构: Controllers/[sub directory name]/Controller\u name.php 需要此Url: htp://domain.com/[子目录名称]/controller\u名称/ 如何在Codeigniter v4中解决这个问题?我还不太熟悉Codeigniter 4和名称空间。。。但我认为这是一个名称空间问题 我试图复制你的案例。我创建了一个目录

在codeigniter v3中,控制器中的子目录工作正常。但在codeigniter v4中,这不起作用

文件夹结构: Controllers/[sub directory name]/Controller\u name.php

需要此Url: htp://domain.com/[子目录名称]/controller\u名称/


如何在Codeigniter v4中解决这个问题?

我还不太熟悉Codeigniter 4和名称空间。。。但我认为这是一个名称空间问题

我试图复制你的案例。我创建了一个目录./App/Controllers/ajax,其中有一个Test.php文件:

<?php namespace App\Controllers\Ajax;

class Test extends \CodeIgniter\Controller
{
    public function index()
    {
        return 'controller works!';
    }
}

我还不太熟悉CodeIgniter 4和名称空间。。。但我认为这是一个名称空间问题

我试图复制你的案例。我创建了一个目录./App/Controllers/ajax,其中有一个Test.php文件:

<?php namespace App\Controllers\Ajax;

class Test extends \CodeIgniter\Controller
{
    public function index()
    {
        return 'controller works!';
    }
}

如果要使用BaseController,必须使用use指定“哪一个”,或者每次使用对象时都可以显式指定它

因此,您可以使用BaseController(,正如deste回答的那样)

<?php namespace App\Controllers\Ajax;

    class Test extends \App\Controller\BaseController // Which BaseController
    {
        public function index()
        {
            return 'controller works!';
        }
    }

如果要使用BaseController,必须使用use指定“哪一个”,或者每次使用对象时都可以显式指定它

因此,您可以使用BaseController(,正如deste回答的那样)

<?php namespace App\Controllers\Ajax;

    class Test extends \App\Controller\BaseController // Which BaseController
    {
        public function index()
        {
            return 'controller works!';
        }
    }

工作正常。但是在这里找不到BaseController。我想在此扩展以前的文件夹BaseController。我指的是所有控制器的公共BaseController。这可能吗?@Paradhali如果您刚刚将控制器更改为BaseController,则不会找到它,因为您没有指定它的位置。CI文档应该给你一个线索,但我已经在上面回答了。@TimBrownlaw我只是在子目录中创建了一个新的BaseController。而且效果很好。但是我想从sub-directry中存在的其他控制器扩展现有的BaseController(默认)。我的意思是,我不想使用多个BaseController。如果你有任何例子,请分享。非常感谢。你有你可以使用的工具,所以做个实验,很好。但是在这里找不到BaseController。我想在此扩展以前的文件夹BaseController。我指的是所有控制器的公共BaseController。这可能吗?@Paradhali如果您刚刚将控制器更改为BaseController,则不会找到它,因为您没有指定它的位置。CI文档应该给你一个线索,但我已经在上面回答了。@TimBrownlaw我只是在子目录中创建了一个新的BaseController。而且效果很好。但是我想从sub-directry中存在的其他控制器扩展现有的BaseController(默认)。我的意思是,我不想使用多个BaseController。如果你有任何例子,请分享。非常感谢。你有可以使用的工具,所以做实验。这正是我想要的。非常感谢你!正是我想要的。非常感谢你!