Code Igniter - 您将如何构建此站点?

时间:2011-04-15 20:16:03

标签: php codeigniter

我将在代码点火器中创建我的第一个站点,这是一个相当基本的站点:

  

家     登录/注册

members area
protected page 1 
protected page 2
protected page 3

general info section
page 1
page 2
page 3 (dynamic table of reports)

about section
page 1
page 2

blog section
listing
article page

我已经完成了几个基本的阅读并阅读了一些文档,但仍然不确定什么是最好的结构方式。任何有CI经验的人都可以向我展示他们如何做到这一点的例子吗?

一些特定的Q是:

    带有导航面板的
  1. 标题在所有页面上都是相同的。通常我会将其编码为包含if / else以显示突出显示的当前部分。我想我只是把它作为一个包含(视图)并首先通过控制器加载它或将其包含在每个视图中?

  2. 我设想有一个名为'user'的模型来处理登录和注册,一个名为'blog'的模型和一个名为'reports'的模型。听起来不错吗?

  3. 对于像我这样的静态部分,我想没有模型,我只有一个控制器,每个静态页面都有一个函数?即带有page1(),page2()的about.php,他们所做的只是加载静态视图?

3 个答案:

答案 0 :(得分:0)

1 - >为了解决这个问题,我决定使用我自己的控制器 使用CI 2.x,在app / core下创建一个名为MY_Controller.php的文件,如下所示:

<?php

 class MY_Controller extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    public function loadView($view) {
        $this->load->view('header');
        $this->load->view($view);
        $this->load->view('footer');
    }
}

然后我扩展了这个控制器而不是CI控制器。请确保config.php文件中的$config['subclass_prefix'] = 'MY_';

2→是

3→这就是它:D

答案 1 :(得分:0)

我是新手(codeigniter)但是:

  1. 对于页眉/页脚,我采用了here的模板策略(第一种方法)。工作得很好。

  2. 在模型之前,我会计划控制器 - 每个部分只有一个。我把所有这些都从MY_controller继承而来,我放置了常用的功能。而你的模特似乎对我来说是对的。我认为它们可以作为DAO,或“服务对象”提供对数据库的访问,而不是更多。网站的通用情报(如果需要)应该在自定义库中,或者在控制器内。

答案 2 :(得分:0)

您应该使用CI库来处理用户注册和每页授权。 这是一个非常简单的例子,说明如何做到这一点。请注意,CI使用MVC pattern

    class Reports extends CI_Controller {

        public function __construct() {
           parent::__construct();
           // load database if needed
           // load a model if needed

        }

        public function page() {
            //get the page requested
            $page_id = $this->uri->segments(2);
            // based on the page_id do something.

            $data['somedata'] = 'About us data here';

            // this is an actual file loaded from the template view
            $data['maincontent'] = 'my_page';
            $this->load->view('template',$data);
        }

    }

    class About extends CI_Controller {

        public function __construct() {
           parent::__construct();
           // load database if needed for this page
        }

        public function page() {
            // same here
            //get the page requested
            $page_id = $this->uri->segments(2);
            // based on the page_id do something.

            $data['somedata'] = 'About us data here';

            // this is an actual file loaded from the template view
            $data['main_content'] = 'my_about_page';
            $this->load->view('template',$data);
        }
    }

在模板文件中

    $this->load->view('template/header');
    $this->load->view('template/nav');
    $this->load->view($main_content);
    $this->load->view('template/footer');