Проверьте данные формы - в модели или в контроллере? - PullRequest
2 голосов
/ 05 декабря 2010

В CodeIgniter у меня есть такая модель и контроллер для публикации комментариев с AJAX

Модель:

class Items_model extends Model {
function add_comment($item_id, $user_id, $text, $type)
    {
        $data = array(
            'item_id' => $item_id,
            'user_id' => $user_id,
            'text' => $text,
            'type' => $type,
            'created_at' => mktime()
        );
        $this->db->insert('comments', $data); 
        return $this->db->insert_id();
    } 

Контроллер:

class Items extends Controller {
function add_comment() 
    {
        $this->load->helper('date');

        $item_id = $this->input->post('item_id', TRUE);
        $text = $this->input->post('comment_text', TRUE);
        $type = $this->input->post('type', TRUE);

        $user_id = $this->session->userdata('user_id'); // user id, must be logged in

        $this->Items_model->add_comment($item_id, $user_id, $text, $type);
        $response = array(
            'message' => 'Thank you!'
        );
        echo json_encode($response);
    } 

В контроллере или в модели я должен контролировать, что данные из формы: $ item_id и $ text не равны NULL, установлен $ user_id и пользователь вошел в систему? И как?

Лучший, Кирилл.

Ответы [ 2 ]

2 голосов
/ 05 декабря 2010

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

1 голос
/ 10 апреля 2012

Этот человек (на форуме CodeIgniter) не согласен, говоря, что вы должны очищать данные там, где они обрабатываются , а не там, где они передаются .Это имеет смысл для меня, потому что это должно произойти только в одном месте, а не на каждом контроллере, который может использовать модель.

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