Code Igniter - как бы вы структурировали этот сайт? - PullRequest
0 голосов
/ 16 апреля 2011

Я собираюсь сделать свой первый сайт в коде воспламенителя, довольно простой сайт, подобный этому:

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 'Вы прошли несколько основных инструкций и прочитали некоторые документы, но все еще не уверены в том, что будет лучшим способом структурировать это.Может ли кто-нибудь, имеющий опыт работы с CI, показать мне пример того, как они это делают?

некоторые конкретные Qs:

  1. заголовок с панелью навигации будет таким же навсе страницы.обычно я кодирую это как включение с if / else, чтобы показать выделенный текущий раздел.Я думаю, я бы просто оставил это как include (представление) и либо сначала загрузил бы его через контроллер, либо включил бы его в каждое представление?

  2. Я бы предполагал иметь модель под названиемuser », который будет обрабатывать вход в систему и регистрацию, модель под названием« блог »и модель под названием« отчеты ».Это звучит правильно?

  3. для статических разделов, например, примерно, я думаю, что не будет никакой модели, и у меня будет просто контроллер с функцией для каждой статической страницы?то есть about.php с page1 (), page2 () и все, что они делают, это загружают статические представления?

Ответы [ 3 ]

0 голосов
/ 16 апреля 2011

Я новичок здесь (codeigniter), но:

  1. Для верхних и нижних колонтитулов я принял шаблонную стратегию от здесь (первая альтернатива). Работал хорошо.

  2. До моделей я планировал контроллеры - по одному на каждую секцию. Я сделал так, чтобы все они наследовали от MY_controller, здесь я размещаю общие функции. И твои модели кажутся мне подходящими. Я думаю, что они как DAOs, или «сервисные объекты», которые предоставляют доступ к базе данных и не намного. Общий интеллект сайта (при необходимости) должен находиться в пользовательской библиотеке или внутри контроллеров.

  3. Да.

0 голосов
/ 21 июня 2011

Вы должны использовать библиотеку CI для обработки вашей регистрации пользователя и авторизации на странице. Вот очень простой пример того, как вы можете это сделать. Имейте в виду, что CI использует шаблон MVC

    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');
0 голосов
/ 16 апреля 2011

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['subclass_prefix'] = 'MY_'; в файле config.php.

2-> yes

3-> вот и все: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...