我正在尝试使用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>
答案 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
来访问该变量。