YII - renderPartial给出CActiveForm错误

时间:2011-12-31 07:29:54

标签: yii

我正在尝试使用renderPartial在产品页面上包含表单,但它会出错

  

致命错误:在第1605行/Applications/MAMP/htdocs/yii/framework/web/helpers/CHtml.php中的非对象上调用成员函数getErrors()

我正在使用以下代码...

在产品页面

// product detail goes here, use below form to make an inquiry about this product
<?php $this->renderPartial('inquiry'); ?>

并在查询页面

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'query-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
    ),
)); ?>


    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'name'); ?>
        <?php echo $form->textField($model,'name'); ?>
        <?php echo $form->error($model,'name'); ?>
    </div>

1 个答案:

答案 0 :(得分:2)

视图中有一个名为$model的变量,但在您的控制器的renderPartial()调用中,您没有将$model传递到视图中。所以视图正在寻找一个名为$model的变量,但它不存在。

您需要在控制器中生成新模型,然后将其传递到视图中,如下所示:

$model = new Product(); //use whatever class you created for the model in place of 'Product' here

$this->renderPartial('inquiry', array('model'=>$model));

'model'=>$model告诉Yii将变量$model传递到视图中,'model'表示用于从视图中访问该变量的名称。所以如果你写的东西如下:

$this->renderPartial('inquiry', array('product'=>$model));

然后在视图中,您可以通过键入$product而不是$model来访问该变量。