Yii2 活动来自 未正确验证


Yii2 ActiveFrom is not validating properly

Yii2 ActiveFrom 未正确验证。

这是我的观点,由 Yii2 Gii 生成。我没有添加任何东西,但它仍然没有正确验证。

<div class="discussion-form">
        <?php $form = ActiveForm::begin(); ?>
        <?php $form->field($model, 'userId')->textInput() ?>
        <?= $form->field($model, 'title')->textInput(['maxlength' => 500]) ?>
        <?= $form->field($model, 'text')->textarea(['rows' => 6]) ?>
        <?= $form->field($model, 'image')->textInput(['maxlength' => 500]) ?>
        <?= $form->field($model, 'upvotes')->textInput() ?>
        <?= $form->field($model, 'downvotes')->textInput() ?>
        <?= $form->field($model, 'commentCount')->textInput() ?>
        <?= $form->field($model, 'tags')->textarea(['rows' => 6]) ?>
        <?= $form->field($model, 'createdAt')->textInput() ?>
        <?= $form->field($model, 'updatedAt')->textInput() ?>
        <div class="form-group">
            <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>
        <?php ActiveForm::end(); ?>
    </div>

表单以第一个元素结尾,如下所示:

<div class="discussion-form">
    <form id="w0" action="/web/discussion/create" method="post">
<input type="hidden" name="_csrf" value="OUJKTVJKMmhVJB45MThbAVQkehgADmcdXToseREpBQ9cBnILDShGBg==">

<!--?php<div class="form-group field-discussion-title required"-->
<label class="control-label" for="discussion-title">Title</label>
<input type="text" id="discussion-title" class="form-control" name="Discussion[title]" maxlength="500">
<div class="help-block"></div>
</form></div>
    <div class="form-group field-discussion-text required">
<label class="control-label" for="discussion-text">Text</label>
<textarea id="discussion-text" class="form-control" name="Discussion[text]" rows="6"></textarea>
<div class="help-block"></div>
</div>

这就是问题所在:

<!--?php<div class="form-group field-discussion-title required"-->

第三行:

<?php $form->field($model, 'userId')->textInput() ?>

应该是

<?= $form->field($model, 'userId')->textInput() ?>

这真的是gii创造的吗?

当然不是未经编辑的:)

正如罗布施指出的那样,你的错误在于<?php $form->field($model, 'userId')->textInput() ?>

ActiveForm 中的表单元素需要回显出来,您可以编写<?php echo $form->....->textInput() ?><?= $form->....->textInput() ?>

如果要从表单中删除 ID 字段,则必须将其注释掉或完全删除。此外,您可能必须从模型中的必需中删除 userId:

public function rules()
{
    return [
        [['userId', 'title'], 'required'],
        ...
    ]
}