Php 在子文件夹控制器中定义的文件夹内的控制器中使用函数

Php 在子文件夹控制器中定义的文件夹内的控制器中使用函数,php,codeigniter,Php,Codeigniter,好了,伙计们,情况就是这样。。。 我在一个用CodeIgniter v2制作的旧项目中工作(目前所有项目都在localhost中)。对于新功能,我在api文件夹中创建了一个名为v1的文件夹 项目结构: 控制器 原料药 v1 visit.php orders.php controller1.php controller2.php 问题是我无法访问visit.phpcontroller 为了测试目的,我在api文件夹中设置访问控制器,并通过以下方式访问它: localhost/projectname

好了,伙计们,情况就是这样。。。 我在一个用
CodeIgniter v2
制作的旧项目中工作(目前所有项目都在localhost中)。对于新功能,我在
api
文件夹中创建了一个名为
v1
的文件夹

项目结构:

控制器

原料药

v1

visit.php

orders.php

controller1.php

controller2.php

问题是我无法访问
visit.php
controller

为了测试目的,我在
api
文件夹中设置
访问
控制器,并通过以下方式访问它:

localhost/projectname/index.php/api/visit/visits
访问
访问
控制器中的功能

用这种方法,一切都能工作!!但是,当我在
v1
文件夹中设置访问控制器时,我得到一个404页面未找到错误

localhost/projectname/index.php/api/v1/visit/visits
额外的

另一个需要记住的想法是。该项目使用RESTAPI库,因此,在
visit
controller中有以下函数

public function visits_get(){
  // return an arrays of visits
}

public function visits_post(){
  // to add a new visit in a bd
}
因此,函数的调用取决于请求方法

我一直在阅读,我发现我必须配置route.php,实际上我这样做了,但没有成功

谢谢,我希望你明白我的要求

ROUTE.php


据我所知,任何不属于
应用程序/controllers/controllers\u name.php
命名约定的控制器都需要在
routes.php
文件中明确定义,否则CI将不会查看子文件夹。这不是什么大问题,实际上,为控制器添加如下内容:

//You'll need to do this for all of your API controllers, unfortunately
$route['api/v1/(:any)'] = 'api/v1/$1';
//If you have controllers taking arguments, eg. /api/v1/stuff/1
$route['api/v1/(:any)/(:any)'] = 'api/v1/$1/$2';

//Catch-all route for 404's, recommended
$route['api/(:any)'] = 'api/v1/error_api';

有关更多信息,请查看。

请分享您的路线file@UsmanAkram完成:)“localhost/projectname/index.php/api/v1/visit/vists\u get”你试过了吗?是的,但仍然不起作用我在Codeigniter 3项目中使用了比这更深入的方法,包括api/v1/Folder/Controller.php等相同的路由-这是可能的。我假设您正在使用并正确扩展了它?事实上,是的,我已经阅读了CI文档。我在stackoverflow的回答中读到CI不允许3层文件夹。这是真的吗?老实说,我不知道有这样的限制。我们自己的应用程序使用了3个以上的子网站,但结构不同,因为我们在同一个应用程序中使用不同的子网站(例如,
application/SUBSITE/controllers/api/controller.php
),并且可以正常工作(当然,子网站功能需要一些工作)。
//You'll need to do this for all of your API controllers, unfortunately
$route['api/v1/(:any)'] = 'api/v1/$1';
//If you have controllers taking arguments, eg. /api/v1/stuff/1
$route['api/v1/(:any)/(:any)'] = 'api/v1/$1/$2';

//Catch-all route for 404's, recommended
$route['api/(:any)'] = 'api/v1/error_api';