【问题标题】:CI - Passing values from controller to model and accessing them in model constructorCI - 将值从控制器传递到模型并在模型构造函数中访问它们
【发布时间】:2011-05-06 08:22:12
【问题描述】:

我陷入了一个问题。希望有人能帮助它。我正在使用 codeigniter 来构建我的应用程序。现在我有了一个想法,为整个应用程序创建一个模型。但怎么可能?我的学长也问我这个,并告诉我不可能。但我非常接近成功。唯一缺少的是将数据从控制器传递到模型的构造函数。

其实我的想法是: -> 我会将所有数据发送到模型的构造函数(如果可能的话)

->然后验证数据(使用我自己的验证类)

->动态设置类属性(使用标准类)

->执行查询(查询类型将驻留在通过控制器传递的数据数组中)。

假设array[0] 存储'insert' 所以我将使用:$this->array[0]->.. etc 执行查询

但我的第一步对我来说是个大问题。因为我不能说进一步的事情会奏效。

【问题讨论】:

    标签: codeigniter model controller


    【解决方案1】:

    我不明白你真正要问的是什么,看起来你打算为 CI 框架已经为你做的很多事情编写自己的代码。

    以下是如何将数据从控制器传递到模型的示例:

    class Foo extends CI_Controller {
    
        function bar()
        {
            $data=array('foo'=>'bar', 'abc'=> 'def');
            $this->load->model('my_model');
            $this->my_model->do_something($data);
        }
    }
    
    class My_model extends CI_Model {
    
        function do_something($data=array())
        {
            print_r($data);
        }
    }
    

    您可以为插入编写自己的模型函数:

    function insert_data($table, $data=array()) {
        $this->db->insert($table, $data);
        // etc
    }
    

    但这只是活动记录 - 已经存在的功能。

    如有必要,您可以将数据传递给模型构造函数,是的。不过,听起来您应该重新考虑一下您的方法。

    验证可以在控制器(实际上是模型)中完成,使用可以根据需要扩展的 CI 验证类。

    【讨论】:

    • Ross 我认为你不认为我试图仅使用单个模型,这意味着我不会使用模型类的任何特定功能/方法。我只是询问如何从模型中的控制器检索数据'构造函数'。而且我认为你没有正确理解 MVC。因为根据 MVC,我们“应该”验证模型中的数据,而不是控制器中的数据。控制器仅用于指挥事物,而不是操纵事物
    • 有些人会beg to differ。由于您的要求并不完全清楚,因此在控制器中进行验证可以接受的 - 但可能不适用于您的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多