YII - renderPartial выдает ошибку с CActiveForm - PullRequest
0 голосов
/ 31 декабря 2011

Я пытаюсь включить форму на странице продукта, используя renderPartial, но она выдает ошибку

Неустранимая ошибка: вызов функции-члена getErrors () для необъекта в / Applications / MAMP / htdocs/yii/framework/web/helpers/CHtml.php в строке 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>

1 Ответ

2 голосов
/ 31 декабря 2011

В вашем представлении есть переменная с именем $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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...