【问题标题】:Which is the best way to post and process data in codeigniter 3.1.5哪个是在 codeigniter 3.1.5 中发布和处理数据的最佳方式
【发布时间】:2018-01-05 07:25:18
【问题描述】:

对于在 CodeIgniter 3.1.5(最新版)中遵循在控制器或模型中发布和处理数据的有效方式有点困惑

方法:1 在模型中

public function insert_entry()
{
    $this->title = $_POST['title'];
    $this->content = $_POST['content'];
    $this->date = time();

    $this->db->insert('entries', $this);
}

方法:2 在控制器中

public function insert_entry()
{
   $title = $this->input->post("title");
   $content  = $this->input->post("content");
   $date  = $this->input->post("date");

   $data = array(
        'title' => $title,
        'content' => $content,
        'date' => $date
   );
   $this->model->insert($data);
}

然后在模型中处理数据和查询。

如果我们正在创建大型 Web 应用程序,这是一种有效的方法。

【问题讨论】:

    标签: php codeigniter codeigniter-3


    【解决方案1】:

    你不应该像这样在没有充分理由的情况下直接在 CodeIgniter 中使用$_POST。这样做意味着框架不会自动清理数据。因此,第二种方法是可行的方法。

    【讨论】:

    • 非常感谢您的回复。所以我们应该将所有的逻辑和条件写在控制器中,如果有任何数据库命中,我们应该调用模型,对吗?
    • 不完全是。理想情况下,您应该将尽可能多的业务逻辑排除在控制器之外(有时称为胖模型、瘦控制器的原则)。然而,获取请求数据在逻辑上确实属于控制器。
    • 抱歉,写的是模型而不是控制器。
    【解决方案2】:

    以下是关于您的问题的一些建议。

    首先。用户Input Class 用于发布和获取。

    基础控制器对于大型项目也非常有帮助。 base-controller-and-apply-it-to-all-existing-controller

    Codeigniter 有一个很棒的验证库Form Validation

    我主要建议你是请读出Codeigniter User Guide。太好了。我也是从那开始的。

    我正在添加一些有用的链接以便更好地理解。

    1. 这里是best practices 的 CodeIgniter 论坛的 Helper 链接
    2. CodeIgniter 文档

    好的,在您发表评论后,我会建议您这样做: 模型意味着执行所有与数据库相关的功能。这不是必须的,但我们始终遵循最佳实践,因此所有与数据库相关的功能都将放置在模型中。

    发布的数据表单视图将首先出现在控制器中。 (请参阅输入建议)然后将该数据发送到模型并根据需要执行进一步的处理。

    【讨论】:

    • 非常感谢您的建议,通常我只在我的控制器中完成所有处理表单验证、发布数据和处理,但有些开发人员喜欢在模型中发布所有数据并执行相同的查询基于相同函数中发布的数据(例如:模型中的 insert_data 函数)。这就是为什么我有这种困惑。
    【解决方案3】:

    其实,没有最好的办法。只有良好实践。无论哪种方式,您都可以将其存档。但是模型和控制器有不同的工作。

    模型仅与数据库互连。而控制器就是自己的加载、初始化、传递等等。

    我个人建议你是如果它是一个数据库相关的东西使用模型。除了在控制器中执行它(如文件上传、验证、重定向、加载 URL)。如果我们以一种道德的方式编写代码,它应该被其他开发人员理解。因此,如果它很混乱,他/她将无法理解其中的任何一个。因此,只需让 变得清晰明了 .. 始终如此。


    阅读这些

    1. Model–view–controller

    【讨论】:

    • 非常感谢您的回复,我通常只在模型中编码查询。我的困惑是在控制器或模型中发布数据。能否请您从我的帖子中提出一种方法,大多数开发人员可能会遵循。谢谢
    • 你所说的在控制器或模型中发布数据是什么意思什么数据
    • 假设我们有一个注册表单,所以在提交表单后,我们使用 post 方法(发布)向控制器或模型发送数据。
    • 通过控制器接收它并验证它们。 (例如:检查空,特殊字符,如果电子邮件 - 格式......)如果有任何错误,请将其抛出以查看。如果一切都完成并成功,则将其发送给模型。所以模型只是执行更新/插入并返回响应。所以再次根据响应在控制器中像往常一样做其余的事情。
    • 太棒了!谢谢。
    猜你喜欢
    • 2010-09-07
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多