php - 如何在 codeigniter v4 的子目录中创建控制器?
问题描述
在控制器中的 codeigniter v3 子目录中工作正常。但在 codeigniter v4 中,这是行不通的。
文件夹结构: Controllers/[子目录名]/Controller_name.php
需要这个网址: htp://domain.com/[子目录名]/controller_name/
如何在 Codeigniter v4 中解决这个问题?
解决方案
如果你想使用 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 结构或任何您喜欢的东西。它们功能强大,一旦您掌握了基础知识,就非常简单。
推荐阅读
- r - 将 ave 用于 r 中的自定义函数时出错
- google-apps-script - 使用 Google Slides Apps 脚本设置表格的宽度和高度
- mysql - SQL VARCHAR(MAX) 不会运行
- android - 如何通过在反应原生中按下按钮来创建弹出菜单
- sql - 查找重复记录
- html - 仅使用 CSS @media print,如何使 html 无序列表跨越多个列?
- windows - Perl 或 Powershell 如何从 UCS-2 little endian 转换为 utf-8 或在 UCS-2 文件上进行内联 oneliner 搜索替换正则表达式
- python - 使用panda基于列ID合并两个不同维度的数据框
- elasticsearch - 在 Open Distro For Elasticsearch 上启用 xpack 功能
- amazon-web-services - 启用更多实例限制的费用