开发者

Code Igniter - how would you structure this site?

I'm going to do my first site in code ignitor, a fairly basic site like this:

home login / register

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

I've gone through a couple of basic tuts and have read some of the documentation but still feel unsure on what would be the best way to structure this. Could anyone that is experienced with CI show me an example of how they' do it?

some specific Qs are:

  1. header with nav panel will be the same on all 开发者_开发问答pages. normally i'd code that as an include with if/else to show highlighted current section. I guess I'd just keep this as an include (view) and either load it first via the controller or include it in every view?

  2. I'd envisage having a model called 'user' which will handle the login and registration, a model called 'blog' and a model called 'reports'. Does that sound right?

  3. for static sections like about, I guess there'd be no model and i'd just have a controller with a function for each static page? i.e. about.php with page1(), page2() and all they do is load static views?


1 -> To fix this problem, I decided to use my own controller like this Using CI 2.x, create a file under app/core called MY_Controller.php like so :

<?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');
    }
}

And then I extend this controller instead of the CI one. Be sure that your $config['subclass_prefix'] = 'MY_'; in the config.php file.

2-> yes

3-> thats about it :D


I'm a newbie here (codeigniter) but:

  1. For headers/footers I adopted the template strategy from here (first alternative). Worked nice.

  2. Before models, I'd plan the controllers -roughly one per each section. I made all them inherit from a MY_controller here I place common funcionalilty. And yours models seems about right to me. I think them rathar as DAOs, or "service objects" that provide access to the database and not much more. GEneral intelligence of the site (if needed) should be in a custom library, or inside the controllers.

  3. Yes.


You should use an CI library to handle your user registration and per page authorisation. Here's a very simple example on how you could do it. Keep in mind that CI uses the 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);
        }
    }

in the template file

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜