Yii得到Model作为参数

时间:2013-09-17 09:34:28

标签: php yii optional-parameters yii-cmodel

我正在尝试修改1个控制器以使用2个模型。这就是我在控制器中使用loadModel函数所做的事情

public function loadModel($id, $_model)
{
    if (isset($_model)){
        $model=$_model::model()->findByPk($id); // syntax error, unexpected "::"
        if($model===null)
            throw new CHttpException(404,'The requested page does not exist.');
        return $model;
    } else {
        $model=Foods::model()->findByPk($id);
        if($model===null)
            throw new CHttpException(404,'The requested page does not exist.');
        return $model;
    }
}

如您所见,我想为此函数创建可选参数,其中第二个参数是Model。你能帮助我实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

您不能使用字符串作为类名来调用静态方法。只需实例化模型并调用findByPk

if (isset($_model)){
    $model = new $_model;
    $model= $model->findByPk($id);

答案 1 :(得分:1)

也许会更好

/**
* @var integer $id
* @var string $_model name model class
*/
       public function loadModel($id, $_model = 'Foods'){
                $model = new $_model;
                $model= $model->findByPk($id);
                if($model===null)
                    throw new CHttpException(404,'The requested page does not exist.');
                return $model;
        }