2013-06-01 1 views
-2

Я занят своим первым проектом «Практика» в кодеригнете. Я использовал flexi_auth в качестве библиотеки проверки и действительно любил способ реализации валидации формы в модели, а не в контроллере, тем самым придерживаясь принципа MVC (Fat models).Codeigniter, Fat models и тощий контроллер

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

Любая помощь будет оценена по достоинству. Вот мой код:

Контроллер:

//Start Information Desk Query() 
public function information() 
{ 
    if ($this->input->post(‘informationForm_submit’)) 
    { 
    $this->load->model(‘contact_model’); 
    $this->contact_model->information_post(); 
    // information_post validation failed 
    } 

    $this->data[‘title’] = ‘Information Desk’; 
    $this->layout->show(‘contact/information_view’, $this->data); 

} 
//End Information Desk Query() 

Модель:

//Start Information Request() 
public function information_post() 
{ 

    $validation_rules = array(
    array(‘field’ => ‘informationEmail’, ‘label’ => ‘Email’, ‘rules’ => ‘required|valid_email’), 
    array(‘field’ => ‘informationQuery’, ‘label’ => ‘Message’, ‘rules’ => ‘required|max_length[500]’) 
); 

    $this->form_validation->set_rules($validation_rules); 

    if ($this->form_validation->run()) 
    { 
    return TRUE; 
    } 
    else 
    { 
    $this->data[‘message’] = validation_errors(’<li class=“error_msg”>’, ‘</li>’); 
    return FALSE; 
    } 

} 
//End Information Request() 

Вид:

<?php 

     if (! empty($message)) 
     { 
     echo ‘<div class = “error_message”> 
     <div class =“error_header”>Please correct the following</div> 
     <div class = “error_image my-icons-Actions-window-close-icon”></div> 
     <ul class = “error_text”>’.$message.’</ul></div>’; 
     } 
    ?> 

* * Пожалуйста, обратите внимание, что форма проверки функциональна в этом код. Если я поставлю следующее: echo $ this-> data ['message'];

.... в модели тогда ошибки отображаются, но явно не как часть моего файла вида, а перед ним. PS. пожалуйста, успокойтесь, если это глупый вопрос, но я новичок в Codeigniter и на самом деле MVC.

+2

Я бы не то, что, если код имеет «модели» (как во множественном числе), вы уже уничтожили модель. MVC состоит из двух основных слоев: слоя модели и уровня представления. Модель не является классом или объектом, а слоем, который содержит несколько групп класса/экземпляров. –

ответ

1

Вы устанавливаете свойство модели, а не получать его в контроллер

вы должны сделать что-то вроде этого в контроллере:

if ($this->input->post('informationForm_submit')) 
{ 
    $this->load->model('contact_model'); 
    $this->contact_model->information_post(); 
    // required addition 
    $this->data['message'] = $this->contact_model->data['message']; 
} 
+0

спасибо Ochi. Это помогло. Качественный товар. – Herm

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