2015-03-30 4 views
1

Я новичок в Yii2 и сначала попытался выработать учебники.yii2 учебник «Работа с формами» - добавление поля

Я просто попытался добавить новое поле (имя: группа) в руководство «Работа с формами», ссылаясь на эту веб-страницу: http://www.yiiframework.com/doc-2.0/guide-start-forms.html#.

Но пользовательский ввод из добавленного поля не отображается в модели.

Модель:

class EntryForm extends Model 
{ 
    public $name; 
    public $email; 
    public $group; // additional attribute !!!!!!!!!!! 

    public function rules() 
    { 
     return [ 
      [['name', 'email'], 'required'], 
      ['email', 'email'], 
     ];  
    } 
} 

Контроллер сайта остается без каких-либо изменений в руководстве.

Начальная Форма:

<?php $form = ActiveForm::begin(); ?> 
    <?= $form->field($model, 'name')->label('Your Name') ?> 
    <?= $form->field($model, 'email')->label('Your E-Mail address') ?> 
    <?= $form->field($model, 'group')->label('Your Group name') ?>  <!-- additional input !!!!!!!!!!! -> 

    <div class="form-group"> 
     <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> 
    </div> 
<?php ActiveForm::end(); ?> 

записи Confirm:

... 
<ul> 
    <li><label>Name</label>: <?= Html::encode($model->name) ?></li> 
    <li><label>Email</label>: <?= Html::encode($model->email) ?></li> 
    <li><label>Group</label>: <?= Html::encode($model->group) ?></li>  <!--additional attribute !!!!!!!!!!! -> 
</ul> 
... 

Примечания:

За исключением дополнительного поля "группа", все работает отлично.

Пользовательский ввод в поле «группа» отображается в $ _POST, как ожидалось.

Но он не появляется в модели, если я называю $ model-> GetAttributes()

Я уже проверил документацию модели-> нагрузки(), но не могу найти какой-либо намек.

Большое спасибо за любую помощь.

+1

beacuse 'group' не является безопасным атрибутом –

ответ

0

правила проверки МОДЕЛИ служит два целей:

  • Убедитесь, что поля, введенные в форме введены правильно
  • Определить, какой form fields are allowed to be assigned to a $model переменной

вы недостающие второй точки здесь так изменить вашу модель правил на

public function rules() 
    { 
     return [ 
      [['name', 'email'], 'required'], 
      ['email', 'email'], 
      ['group', 'safe'], 
     ];  
    } 

и он будет работать

+0

Большое спасибо. Я действительно не понял, что вам нужно правило проверки, даже если нет особой необходимости закрепить проверку формы на отсутствие ввода. –

+0

прочитайте это http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/, это будет полезно в понимании –

Смежные вопросы