yii Forms возвращает ошибку, параметр не определен

У меня есть настройки контроллера, как

public function actionIndex()
{
$model = new SettingsForm;

if(isset($_POST['SettingsForm'])) {
if($model->validate()) {
//
}
}

$this->render('index', array('model' => $model));
}

и в окне настроек:

<?php
$form = $this->beginWidget(
'CActiveForm', array(
'id' => 'settings-form',
'enableClientValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
),
));
?>
<div class="form-group">
<?php echo $form->labelEx($model, 'meta_keywords'); ?>
<?php echo $form->textField($model, 'meta_keywords', array('class' => 'form-control', 'value' => Yii::app()->config->get('meta_keywords'), 'placeholder' => 'Ключевые слова и фразы через запятую')); ?>
<?php echo $form->error($model, 'meta_keywords', array('class' => 'text-danger')); ?>
</div>
<div class="form-group">
<?php echo $form->labelEx($model, 'main_page'); ?>
<?php echo $form->dropDownList($model, 'main_page', $model->getPages()); ?>
<?php echo $form->error($model, 'main_page', array('class' => 'text-danger')); ?>
</div>

Функция getPages в модели SettingsForm:

public function getPages() {
return array(
0 => 'Nothing'
);
}

Этот код возвращает ошибку:

Свойство «SettingsForm.main_page» не определено.

Но все предыдущие элементы Yii созданы успешно и не возвращают никакой ошибки = \

0

Решение

В вашем SettingsForm модель main_page определены в rules метод? то есть

public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array( ... 'main_page', ...),
...
);
}
0

Другие решения

/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('site_name, charset, meta_description, meta_keywords', 'required'),
array('main_page', 'boolean')
);
}
0

обновленный

Класс SettingsForm расширяет CFormModel

Все еще делай это. смотреть на Вот а также здесь.

public function rules()
{
return array(
array('site_name, charset, meta_description, meta_keywords', 'required'),
array('main_page', 'boolean'),
array('site_name, charset, meta_description, meta_keywords, main_page', 'safe'),
);
}
0

Pfffff ….
Я просто забыл вызвать переменную в модели $ main_page …

class SettingsForm extends CFormModel
{
public $site_name;
public $charset;
public $meta_description;
public $meta_keywords;
public $main_page;

..
}
0
По вопросам рекламы [email protected]