0

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

文件夹结构: Controllers/[子目录名]/Controller_name.php

需要这个网址: htp://domain.com/[子目录名]/controller_name/

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

4

2 回答 2

2

如果你想使用 BaseController 你必须指定“哪个”,使用 USE 或者你可以在每次使用对象时明确指定它。

所以你可以(正如 deste 回答的那样)但使用 BaseController

<?php namespace App\Controllers\Ajax;

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

或者使用“使用”的更好方法是准确指定您想要使用的 BaseController 一次。

<?php namespace App\Controllers\Ajax;

use App\Controllers\BaseController; // Which BaseController are you referring to.

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

这是告诉 PHP 你的文件在哪里的问题。

不是最清楚的解释,但请考虑一下,因为您必须说“某物在哪里”。

我强烈建议多阅读几次Codeigniter 用户指南,并多研究一下它,以了解它是如何工作的。您可能还想阅读Lonnie Ezell(CodeIgniter 的开发人员之一)的Primer : Namespaces & CodeIgniter 4 。

使用“命名空间”和“使用”,您可以创建 HMVC 结构或任何您喜欢的东西。它们功能强大,一旦您掌握了基础知识,就非常简单。

于 2020-04-19T03:34:28.470 回答
0

我对 CodeIgniter 4 和命名空间还不是很熟悉……但我想这是一个命名空间问题。

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

<?php namespace App\Controllers\Ajax;

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

https://myserver/ajax/test页面工作正常。我希望这可以在某种程度上帮助你。

于 2020-04-18T19:50:07.673 回答