【问题标题】:How to pass variable from controller to model - Yii如何将变量从控制器传递到模型 - Yii
【发布时间】:2014-08-31 22:47:22
【问题描述】:

我目前正在尝试将一个变量从控制器传递到我的模型。从以前的观点来看,我在一个按钮中传递了 $id。

<a class="btn btn-info" type="button" href="index.php?r=recipient/index&id=<?php echo $data->id; ?>">Manage</a>  

从那里,我访问了控制器内部的 $id 并使用了它。但是,现在我正在模型中创建一个需要使用该 $id 的函数。我不能将它作为参数传递,因为它是 beforeSave 函数(在我保存新条目之前更新我的数据库) 这在模型 Recipient.php 中看起来像这样

// before you save the function here are the things you should do
public function beforeSave()
{
    if($this->isNewRecord)
    {

        // updates the list_id of the individual with the selected ListId

        $this->list_id = Recipient::model()->getListId;


    }
    return parent::beforeSave();
} 

最后,我尝试在同一模型中创建函数 getListId。

public function getListId()
{
    // my code here 
}

有没有一种简单的方法可以将变量从控制器传递给模型以供使用?或者,模型中的函数有没有办法访问传递给控制器​​的变量?

【问题讨论】:

    标签: php yii


    【解决方案1】:

    为您的模型添加一个属性并在您的控制器中设置该属性。

    class Model
    {
        public $var;
        ... more code ...
    }
    
    actionIndex($idList)
    {
        $model = Model::model()->find(...);
        $model->var = $idList;
        ... more code ...
    }
    

    【讨论】:

    • 有没有办法简单地调用整个模型?与使用 find() 方法相反?当我真的只想将变量传递到模型中时,我并不完全确定我应该搜索什么。同样,当我尝试在函数中重新访问模型中的变量 $var 时 - 我发现它没有显示任何内容。不能这样设置全局变量吗?
    • 我不太确定这一切是关于什么的。在我看来,您可能使用错误的方法来实现某些目标。对我来说它看起来不对......你能解释一下你想要构建什么吗?这是什么listId?是动态的吗?不能用模型保存吗?或者它是另一个数据库表的现实?
    • 因此,listID 是我试图保存在收件人模型中的外键。我有一堆不同的列表,每个收件人都链接到其中一个列表。当我单击“管理列表”时,我会转到收件人索引,在那里我可以查看该列表的收件人。 id 从视图传递到控制器
    • 从这里的最终目标是,每当我创建一个新收件人时,我希望它使用他们之前单击的列表的 id 更新收件人 list_id。
    • 我正在尝试执行您在上面所做的工作,然后我可以将 id 的变量存储在不是视图的某个位置,以便在创建新收件人时可以访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2012-06-15
    相关资源
    最近更新 更多