无法在 codeigniter 中调用控制器

Posted

技术标签:

【中文标题】无法在 codeigniter 中调用控制器【英文标题】:Can't calling controller in codeigniter 【发布时间】:2018-01-05 20:21:52 【问题描述】:

我在 Codeigniter 项目中有两个应用程序。下面是结构:

/admin
    /index.php
/application
    /admin
        /controllers
           /Dashboard
           /Product
           /Post
    /public
        /controllers
           /Home
           /About
           /Contact
/system
/index.php

公共应用程序可以正常工作。我可以使用此设置调用所有控制器:

/*----seting in /index.php---*/
$application_folder = 'application/public';

/*----seting in /application/public/config/config.php---*/
$config['base_url'] = 'http://localhost/myweb/';

/*----seting in /application/admin/config/routes.php---*/
$route['default_controller'] = 'Home';

但是,Admin 应用程序无法正常工作。我只能调用仪表板控制器,这是我设置的默认控制器。设置如下所示:

/*----setting in /admin/index.php---*/
$application_folder = '../application/admin';

/*----seting in /application/admin/config/config.php---*/
$config['base_url'] = 'http://localhost/myweb/admin/';

/*----seting in /application/admin/config/routes.php---*/
$route['default_controller'] = 'Dashboard';

所以,当我访问时:

http://localhost/myweb/                  //it will return home page
http://localhost/myweb/admin             //it will return dashboard page
http://localhost/myweb/admin/product     //it will return error

谁能帮我解决这个问题?

【问题讨论】:

这个链接可能对link有帮助 您是否在两者中都复制了索引? @bagongpct 您好 ankit,我按照您在上面给我的链接中的说明进行操作。我被复制 index.php 到 /admin/index/php 您还需要设置路由来识别包含admin/ 的url,并将其重定向到应用程序文件夹中的管理文件夹 【参考方案1】:

为什么不将您的管理区域分成一个子目录,而不是拥有两个应用程序目录。这样您的公共控制器和管理控制器就可以共享模型、助手等

原来是这样:

/application
    /controllers
        /admin
            Index.php <-- admin controller inside 'admin' directory
        Index.php <-- public controller outside 'admin' directory
    /models
    /views
        /admin
        /public

【讨论】:

我喜欢这种方法。

以上是关于无法在 codeigniter 中调用控制器的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter - 无法命中类中的方法

在 CodeIgniter 控制器中创建函数

CodeIgniter 2.1.3 - 表单助手 - 无法提交数据

codeigniter - 在控制器中使用帮助器不起作用

如何检查请求是不是通过 CodeIgniter 中的 AJAX 发出?

在 codeigniter PATH 中调用控制器模型和视图