2013-04-24 3 views
1

Я разрабатываю веб-приложение с помощью CodeIgniter.MVC pattern: использование функций из модели в поле зрения

Я также реализованы все функции в соответствии со структурой MVC, но я не уверен, есть ли у спутать себя до сих пор ...

Если я использую функции из модели в представлении, является что нарушает шаблон MVC? Рассматривается ли это как мнение, связанное с моделью?

Позвольте мне показать некоторые коды:

Один из моего контроллера:

public function loader($page){ 
    #load pages if these settings will be loaded for sure 
     if (! defined('BASEPATH')) exit('No direct script access allowed'); 

     $this->load->helper('url'); 
     $this->load->library('session'); 
     $this->load->model('app_model'); 
     $this->load->model('app_user_model'); 
     $this->load->view('app/header'); 
     $this->load->view($page); 
     $this->load->view('app/footer'); 
    } 

Один из моей модели:

public function submit_login($username, $pass){ 
    //try to login, if the login credentials are correct, set the user session to username. 

     $this->db->select("name, PersonName"); 
     $this->db->where("name", $username); 
     $this->db->where("pass", $pass); 
     $result = $this->db->get("members"); 


     if ($result->num_rows() > 0){ 
      foreach($result->result() as $user){ 
       $this->session->set_userdata('user_name', $user->PersonName); 
       $this->session->set_userdata('user', $user->name); 
      } 
      return 1; 
     }return 0; 
    } 

Частичный вид:

$is_login = $this->app_user_model->is_loggedin(); 

if($is_login){ 
    //if user is logged in, prompt to log out 
    echo "Welcome back ".$this->session->userdata['user_name']."."; 
    echo anchor(base_url('profile/logout'), "logout"); 
    echo "<br/>"; 
}else{ 

    echo validation_errors(); 
    //if user is not logged in, ask to log in first 
    echo form_open('profile/login'); 

    $user_name = array(
       'maxlength' => '25', 
       'size'  => '55', 
       'style'  => 'width:30%; margin-left:5%', 
       'name'  => 'username', 
       ); 

    //get the date 
    echo "<div class='user_name_input'>"; 
    echo "Username(email)"; 
    echo form_input($user_name, '', 'class="user_name"'); 
    echo "</div>"; 

В этом case, я вызвал is_loggedin() f rom user_model ..

Я правильно следую примеру MVC?

Спасибо за помощь.

+3

Кто-то скажет вам, что его против других MVC скажут вам об обратном. Практика показывает мне, что в представлениях должна быть только простая логика (if/else), циклы, escape-последовательности, но нет запросов к вашей БД (включая использование модели для этого). Лучше собрать и передать любую переменную информацию из вашего контроллер к вашему виду. – Svetoslav

+0

Вы используете CodeIgniter. Так да. Только с этим выбором вы уже нарушили шаблон MVC и основные принципы, на которые указывает MVC. –

ответ

3

привело не к суждению, но я думаю, что вам не хватает точки MVC.

URL-адрес вызывающего контроллера, контроллер вызывает слой (ы) модели для получения данных и определения вида, а затем вызывает правильный вид.

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

Я уверен, что вы можете использовать его своим путем, но, по моему мнению, это неправильный способ его использования.

+0

Я думаю, вы правы ... – led

+0

Не стоит беспокоиться о человеке, требуется некоторое время, чтобы использовать поток MVC, по крайней мере, вы задаете правильные вопросы и замечаете, что вы не используете его правильно. – We0

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