2013-12-12 8 views
0

Сегодня я решил, что должен начать полагаться на фреймворк PHP, потому что писать с нуля каждый раз действительно утомительно. В качестве моей структуры я выбрал CodeIgniter, и я хочу сказать, что это потрясающе и легко использовать. Но у меня есть некоторые вопросы и замешательство. Я не очень уверен, как структурировать мой сайт, так как я не знаю, когда использовать модели и когда использовать контроллеры.
То, что я прямо сейчас:

Модели и контроллеры CodeIgniter Confusion

Pagès Controller

// PAGES CONTROLLER 
// As its name, this controller simply loads pages by a url query. 
class Pages extends CI_Controller { 
    /* 
    * Constructor - loads the variables model. 
    */ 
    public function __construct() { 
     parent::__construct(); 
     $this->load->model ('variables'); 
    } 
    /* 
    * Displays a page by its name. 
    */ 
    public function view($page = 'home') { 
     if (! file_exists ("application/views/pages/$page.php")) { 
      show_404(); 
     } 
     $data ['title'] = ucfirst ($page); 
     $data ['variables'] = $this->variables; 

     $this->load->view ("templates/header", $data); 
     $this->load->view ("pages/$page", $data); 
     $this->load->view ("templates/footer", $data); 
    } 
} 


Переменные Модель

// VARIABLES MODEL 
// Used like a "mysql variables", all the data is taken from a table contains 2 
// rows: id and value. and those variables are mostly used for site settings. 
class Variables extends CI_Model { 
    /* 
    * Constructor, simply loads the database. 
    */ 
    public function __construct() { 
     $this->load->database(); 
    } 
    /* 
    * Gets a variable stored in the database. 
    */ 
    public function get($id) { 
     $query = $this->db->get_where ('variables', array (
       'id' => $id 
     )); 
     return $query->row_array()["value"]; 
    } 
    /* 
    * Sets a variable stored in the database. 
    */ 
    public function set($id, $value) { 
     $this->db->where ('id', $id); 
     $this->db->update ('variables', array (
       'value' => $value 
     )); 
    } 
} 

Могу ли я, используя правильную иерархию? Я могу что-то изменить?

Теперь для моего основного вопроса: скажем, например, что я хочу добавить функциональность членства для своих сайтов. Должен ли я сделать следующее? :

Member Controller - Управление текущим элементом и все действия с формами приводят к этому контроллеру, который взаимодействует с моделью Members (см. Ниже).

Модель участников - обрабатывает всю обработку базы данных, выполняет функции, такие как: login, register, getMember.

+0

Использование контроллеров для обработки запросов и передачи данных для просмотра при использовании моделей для всего взаимодействия с БД и реализации всех бизнес-логик вашей системы в моделях использовать представления только для отображения данных –

+0

@MKhalidJunaid Большое спасибо за быстрый ответ, я уже знай, что ты только что сказал мне, но мой главный вопрос: правильно ли я с примером, который я дал. –

+0

Вы также должны взглянуть на плиту котла HTML5 для создания структуры сайта .... http://ariok.github.io/codeigniter-boilerplate/ – Christopher

ответ

2

Я просто хочу, чтобы предложить в вашем контроллере вы можете сделать это в две строки:

$this->load->view ("templates/header", $data); 
    $this->load->view ("pages/$page", $data); 
    $this->load->view ("templates/footer", $data); 

Так как вы можете загрузить вид внутри зрения, то вы можете попробовать: На ваш взгляд e.g template.php

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

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

$data['main_content'] = $page; 
    $this->load->view('templates/template',$data); 
+0

Спасибо за предложение! Итак, вы просто назначаете имя страницы переменной main_content, но как ее отображать в представлении? какую функцию мне нужно использовать? –

+0

'$ data ['main_content']' равно странице, которая будет загружена. – leonardeveloper

+0

Попробуйте проверить эту серию и не пропустите ни одного http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-day-1/ – leonardeveloper

Смежные вопросы