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

时间:2010-06-30 05:28:45

标签: php codeigniter

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

1 个答案:

答案 0 :(得分: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
        ...

在控制器的早期部分,比如说构造函数,您可以决定用户代理请求它,然后根据它选择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');
}

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

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