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'],
...
]
}