0

1 つのタブでウィジェット呼び出しを介してフォームを表示したいタブが表示されています。

<div class="tabcontent" id="country2"> <div class="No-Time">No Reviews ! <?php $this->widget('Review');?> </div> </div>

このためのReviewモデルを作成しました。次に、コンポーネントを作成します

<?php 
class Review extends CWidget
{
public $title='Review';
public $visible=true; 
public function run()
{
    if($this->visible)
    {
        $this->renderContent();
    }
}

protected function renderContent()
{

    $merchant_id = Yii::app()->user->id;
    $model  =  new Review;

    $this->performAjaxValidation($model);
$valid  = $model->validate();

    if(isset($_POST['ajax']) && $_POST['ajax']==='review-form')
    {
            echo CActiveForm::validate($model);
            Yii::app()->end();
    }
    $this->render('Review',array('model'=>$model));
}

protected function performAjaxValidation($model)
{
        if(isset($_POST['ajax']) && $_POST['ajax']==='review-form')
        {
                echo CActiveForm::validate($model);
                Yii::app()->end();
        }
}
}
?>

これは私のコンポーネントビューファイルです:

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'review-form',
'enableAjaxValidation'=>false,
)); ?>



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

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

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

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

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

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

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

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


<div class="row buttons">
    <?php echo CHtml::submitButton('Submit'); ?>
</div>
<input type="hidden" name="merchant" id="merchant-id" />
<?php $this->endWidget(); ?>

</div>

このエラーが返されます。なぜこれが起こったのかわかりません。

 Review and its behaviors do not have a method or closure named "isAttributeRequired". 
4

1 に答える 1

2

コンポーネントの名前を 以外の名前に変更する必要がありますReview。このエラーは、行$model= new Reviewが Review モデルではなく Review コンポーネントのインスタンスを作成するために発生します。

于 2013-04-02T07:22:03.150 に答える