【问题标题】:Codeigniter: easiest way to use variables between models and controllers, models and models, controllers and controllersCodeigniter:在模型和控制器、模型和模型、控制器和控制器之间使用变量的最简单方法
【发布时间】:2011-05-30 08:05:29
【问题描述】:

这不可能吗?

我想我会清理我的一些代码并将 db 查询仅放在它们所属的模型中,并将属于控制器中的所有其他代码放在控制器中。

现在我不断收到未定义的变量错误。这不是问题,但我正在尝试解决如何在文件之间调用变量。

我只想将注册时生成的随机哈希存储在一个变量中,因为这是我在锚点中使用的变量,用于发送给用户电子邮件的“单击此处激活帐户”链接。

我还在方法中使用相同的变量,将电子邮件中 ​​URL 末尾的 uri 哈希与存储在数据库中的 uri 哈希值进行比较。为了让用户确认他们的帐户并更新“状态”数据库到 1(已激活)。

我真的很感激一些建议。我很享受这个学习过程。失眠但享受它,因为它让我有逻辑地思考。

【问题讨论】:

    标签: php mysql codeigniter methods global-variables


    【解决方案1】:

    如果变量位于单独的文件中,则您无法访问它,而是应该在您的类中设置它。

    class User_model extends Model {
    
        // Declare the foo variable
        public $foo = "";
    
        function blah() {
    
            // You can set variable foo this way from any controller/model that includes this model
            $this->foo = "dog";
    
            // You can access variable foo this way
            echo $this->foo;
        }
    }
    

    【讨论】:

    • 是的,您可以将变量设置为函数的返回值,但这似乎不是您所要求的
    • 我的问题是,当我进行编码时,我使用控制器中模型的方法说我遇到了未定义变量的问题。就像我在模型中的方法中设置的变量一样,不能在我从中加载该模型方法的控制器中的方法中使用。这是我遇到的一个问题,另一个是有时我在模型或控制器中将变量从一种方法传递到另一种方法时。
    • 请注意,如果您需要从模型中的构造调用函数 blah(),您将无法再回显 $this->foo,因为您将获得一个“标题”发送”错误。您仍然可以访问函数 blah() 中的 var 值,但如果您特别需要回显某些内容,则必须从视图而不是模型中完成。
    猜你喜欢
    • 2013-03-12
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    相关资源
    最近更新 更多