0

当我调用 CreateController 时出现此错误:“get_class() 期望参数 1 是对象,给定数组”

Controll/actionCreate()如下:

public function actionCreate() {
    $model = new Ogrenci;
    $model2 =new Adresler;
    $this->performAjaxValidation($model, 'ogrenci-form');
    $this->performAjaxValidation($model2, 'ogrenci-form');
    if (isset($_POST['Ogrenci'],$_POST['Adresler'])) {
        $model->setAttributes($_POST['Ogrenci']);
        $model2->setAttributes($_POST['Adresler']);
        if ($model->save(false) && $model2->save(false)) {
            if (Yii::app()->getRequest()->getIsAjaxRequest())
                Yii::app()->end();
        else
            $this->redirect(array('view', 'id' => $model->ogrenci_id));
        }
    }
    $this->render('create', array( 'model' => $model,'model2' => $model2));
}

创建.php:

<?php  $this->renderPartial('_form', array(
    'model' => array('model'=>$model,'model2'=>$model2),
    'buttons' => 'create'));
?>

而_form.php的字段如下:

<div class="row">
    <?php echo $form->labelEx($model2,'aciklama'); ?>
    <?php echo $form->textField($model2,'aciklama'); ?>
    <?php echo $form->error($model2,'aciklama'); ?>
</div><!-- row -->
4

2 回答 2

2
$this->renderPartial('_form', array(
    'model' => array(
        'model'=>$model,
        'model2'=>$model2
    ),
    'buttons' => 'create'
));

上面的代码意味着文件_form.php可以访问两个变量:$model - 两个元素的数组,$buttons - 字符串。

因此,要访问第一个模型,您必须编写$model['model']第二个 - $model['model2'].

但在这段代码中

<?php echo $form->labelEx($model2,'aciklama'); ?>
<?php echo $form->textField($model2,'aciklama'); ?>
<?php echo $form->error($model2,'aciklama'); ?>

您正在尝试访问未定义的变量$model2。这应该会引发相应的错误。

没有得到错误的事情让我认为在列出的代码之前的某个地方你$model以类似的方式访问变量,如下所示:

echo $form->labelEx($model,'test');

在上面的代码$model中是数组(因为你传递了数组)。这就是为什么您会收到该对象是预期的错误。

因此,您应该传递模型或以适当的方式访问它们。

我希望这有帮助。

于 2013-05-03T20:21:51.000 回答
0

我解决了另一个问题。也许有人需要..

(CDbCommand 执行 SQL 语句失败:SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键)

if ($model->save(false) && $model2->save(false)) {
        if (Yii::app()->getRequest()->getIsAjaxRequest())
                Yii::app()->end();
        else
            $this->redirect(array('view', 'id' => $model->ogrenci_id));
}

  $a=$model2->save(false);
    $model->adresler_id=$model2->adresler_id;
    if ($a && $model->save(false)) {
        if (Yii::app()->getRequest()->getIsAjaxRequest())
            Yii::app()->end();
        else
            $this->redirect(array('view', 'id' => $model->ogrenci_id));
    }
于 2013-05-04T13:12:07.907 回答