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

时间:2017-01-23 18:31:37

标签: php codeigniter

好的,伙计们,情况就是这样...... 我正在使用"No one"创建它的旧项目(目前所有都在localhost中)。对于新功能,我在CodeIgniter v2文件夹

中创建了一个名为v1的文件夹

项目结构:

  

控制器

     
    

API

         
      

V1

             
        

visit.php

                 

orders.php

      
    
  
     

controller1.php

     

controller2.php

问题是我无法访问api控制器

为了测试目的,我将visit.php文件夹中的visit控制器设置为访问它:

api
  

localhost/projectname/index.php/api/visit/visits visits控制器中的函数

用这种方式一切正常!!但是,当我在visit文件夹中设置访问控制器时,我得到404页面未找到错误。

v1

附加

另一个需要记住的想法是。这个项目使用一个库来访问REST API,所以在localhost/projectname/index.php/api/v1/visit/visits 控制器中有函数

visit

因此,将根据请求方法调用该函数

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

谢谢,我希望你明白我在问什么!

ROUTE.php

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

public function visits_post(){
  // to add a new visit in a bd
}

这就是route.php中的所有内容._。

1 个答案:

答案 0 :(得分:0)

据我所知,任何超出application/controllers/controller_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';

有关详细信息,请查看routing docs for CodeIgniter 2