【问题标题】:yii2 tutorial "Working with Forms" -- add fieldyii2 教程“使用表单”——添加字段
【发布时间】:2015-06-03 11:14:18
【问题描述】:

我是 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(); ?>

进入确认:

...
<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() 就不会出现在模型中

我已经检查了 model->load() 的文档,但找不到任何提示。

非常感谢您的帮助。

【问题讨论】:

  • 因为group 不是安全属性

标签: php forms yii2


【解决方案1】:

模型的验证规则有两个目的:

  • 确保正确输入表单中的字段
  • 定义哪个form fields are allowed to be assigned to a $model 变量

您在这里遗漏了第二点,因此将您的模型规则函数更改为

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

它会起作用的

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多