2011-12-31 54 views
0

我想包括使用的RenderPartial产品页面上的形式,但它给错误谊 - 的RenderPartial给出误差CActiveForm

Fatal error: Call to a member function getErrors() on a non-object in /Applications/MAMP/htdocs/yii/framework/web/helpers/CHtml.php on line 1605

我使用下面的代码...

在产品页面

// 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> 

回答

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访问变量。