在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不为空,设置了$ user_id并且用户已登录? 怎么样?
最好,基里尔。
答案 0 :(得分:2)
我会在控制器级别进行验证,然后在您自己工作的情况下在模型级别设置默认值。理想情况下,您可以在每个级别进行验证和错误处理,甚至在客户端进行一些验证。在大型项目中,可能是一个开发人员正在构建模型而另一个正在构建控制器。如果每个都在他们自己的级别进行验证,那么它不仅会使应用程序更安全,而且会让每个人都知道他们正在正确地访问这些函数,等等。
答案 1 :(得分:1)
This person(在CodeIgniter论坛上)不同意,说你应该将数据清理到处理,而不是传递的地方。这对我来说很有意义,因为它只需要在一个地方发生,而不是在每个可能使用该模型的控制器中发生。