Php 根据url更改CodeIgniter控制器目录

Php 根据url更改CodeIgniter控制器目录,php,codeigniter-2,codeigniter-routing,Php,Codeigniter 2,Codeigniter Routing,我是CodeIgniter的新手,我必须在子域上创建一个移动网站。要加载的唯一不同内容取决于您是否是移动设备,它是controllers目录,对于这两个版本,应用程序文件夹的所有其余部分都可以。如何让CodeIgniter根据某些参数为特定的控制器目录充电 或者,这不是使用CodeIgniter管理基于子域的移动站点的最佳方法吗?我希望能够访问相同的自定义库和模型 谢谢你指引我,我迷路了!:) 你会想看看你想做什么。我不太清楚为什么您需要不同的控制器,因为我假设您显示的每个页面的数据都是相同的(

我是CodeIgniter的新手,我必须在子域上创建一个移动网站。要加载的唯一不同内容取决于您是否是移动设备,它是
controllers
目录,对于这两个版本,应用程序文件夹的所有其余部分都可以。如何让CodeIgniter根据某些参数为特定的
控制器
目录充电

或者,这不是使用CodeIgniter管理基于子域的移动站点的最佳方法吗?我希望能够访问相同的自定义库和模型


谢谢你指引我,我迷路了!:)

你会想看看你想做什么。我不太清楚为什么您需要不同的控制器,因为我假设您显示的每个页面的数据都是相同的(移动与非移动)-只是布局会改变以更好地适应移动平台。如果是这种情况,那么在根据用户代理收集/处理控制器中的所有数据后,您只需加载不同的视图(分别为移动/桌面视图)——您甚至不需要不同的子域,更不用说另一组控制器了。这就是MVC的强大功能。

您将希望看到它来完成您想要做的事情。我不太清楚为什么您需要不同的控制器,因为我假设您显示的每个页面的数据都是相同的(移动与非移动)-只是布局会改变以更好地适应移动平台。如果是这种情况,那么在根据用户代理收集/处理控制器中的所有数据后,您只需加载不同的视图(分别为移动/桌面视图)——您甚至不需要不同的子域,更不用说另一组控制器了。这就是MVC的威力。

我建议不要创建多个控制器目录。大部分站点的控制器逻辑很可能是相同的。您可以在控制器中创建单独的功能,以便在移动版本和桌面版本出现差异时使用

首先,我建议使所有控制器从自定义控制器继承。参见Phil Sturgeon在上的帖子。一旦实现了这一点,您就可以在这个定制的“母亲”控制器中检查请求是来自移动设备还是来自桌面,所有的后代控制器都会知道这一点。使用
$this->agent->is\u mobile()

改变的是你的演示文稿,而不是你的控制器。现在您知道了请求的来源(代理),可以呈现适当的内容:

视图
目录中创建两个目录

views
    desktop
    mobile
在调用您的视图时:

$this->load->view($this->data['agent'].“/theview”)

关于您在评论中提到的ajax请求,您可以使用
$this->input->is\u ajax\u request()
函数检查这些请求。当用户在您的站点上单击链接或按钮并启动控制器时,无论是在移动设备上还是在桌面上,他们通常会共享类似的功能(例如数据库写入)。。。但是,您可以使用
is\u ajax\u request()
函数进行分流,并提供适合平台的响应

建议查看视图结构上的另一个StackOverflow问题以了解更多信息


希望这有帮助。

我建议不要创建多个控制器目录。大部分站点的控制器逻辑很可能是相同的。您可以在控制器中创建单独的功能,以便在移动版本和桌面版本出现差异时使用

首先,我建议使所有控制器从自定义控制器继承。参见Phil Sturgeon在上的帖子。一旦实现了这一点,您就可以在这个定制的“母亲”控制器中检查请求是来自移动设备还是来自桌面,所有的后代控制器都会知道这一点。使用
$this->agent->is\u mobile()

改变的是你的演示文稿,而不是你的控制器。现在您知道了请求的来源(代理),可以呈现适当的内容:

视图
目录中创建两个目录

views
    desktop
    mobile
在调用您的视图时:

$this->load->view($this->data['agent'].“/theview”)

关于您在评论中提到的ajax请求,您可以使用
$this->input->is\u ajax\u request()
函数检查这些请求。当用户在您的站点上单击链接或按钮并启动控制器时,无论是在移动设备上还是在桌面上,他们通常会共享类似的功能(例如数据库写入)。。。但是,您可以使用
is\u ajax\u request()
函数进行分流,并提供适合平台的响应

建议查看视图结构上的另一个StackOverflow问题以了解更多信息


希望这能有所帮助。

我不完全了解CI,但是如果您在类的构造中添加了一些内容,检查主机名并包含位于不同文件夹中的扩展类,然后调用此类,又如何?您将不得不进行一些黑客攻击,但这似乎是可能的。或者你也可以用有趣的钩子,我来看看,谢谢!我不完全了解CI,但是如果您在类的构造上添加了一些东西来检查主机名,并包含位于不同文件夹中的扩展类,然后您调用这样的类呢?您将不得不进行一些黑客攻击,但这似乎是可能的。或者你也可以用有趣的钩子,我来看看,谢谢!移动版将包含不同的功能,有些请求不会以完全相同的方式完成(移动版中的ajax,不是桌面示例)。移动版将包含不同的功能,有些请求不会以完全相同的方式完成(移动版中的ajax,不是桌面示例)。你的回答很好,非常感谢你!我当然会接受的!如果你能帮我的话,我有两个问题:在移动网站上,我是否想放一个链接来显示桌面ve