在代码点火器中提供不同的视图

lef*_*kir 2 php codeigniter

我对代码点火器很新.是否有针对不同背景提供不同视图的最佳实践.例如,我想为具有相同控制器的移动用户代理提供特定页面.

Bol*_*ock 9

对此没有严格的规定.您可以根据需要构建视图文件,并调用$this->load->view()加载不同视图文件以获取控制器中的不同结果.根据我的经验,CodeIgniter非常公开地适应您组织应用程序文件的方式.


在您的示例中,也许我将我的system/application/views文件夹分为两个子文件夹:main桌面浏览器和mobile移动浏览器:

system/
  application/
    views/
      main/
        index.php
        some_page.php
        ...
      mobile/
        index.php
        some_page.php
        ...
Run Code Online (Sandbox Code Playgroud)

在控制器的早期部分,比如构造函数,您可以决定请求它的用户代理,然后选择mainmobile基于此,然后根据控制器操作显示您的视图.

一些快速的代码片段,为您提供一个更好的主意,因为您是新的......

// Place this just below the controller class definition
var $view_type = 'main';

// Controller constructor
function MyController()
{
    parent::Controller();

    if ($this->agent->is_mobile())
    {
        $this->view_type = 'mobile';
    }
    else
    {
        $this->view_type = 'main';
    }
}

// Example action
function some_page()
{
    // ...

    // This comes from the 'var $view_type;' line above
    $this->load->view($this->view_type . '/some_page');
}
Run Code Online (Sandbox Code Playgroud)

以及一些有用的参考资料供您探索:

希望我的解释有所帮助,并希望您对CodeIgniter感到高兴:)