我试图用yii2活动表单发布一个隐藏值,但它没有在我的数据库表中定义。这就是为什么该表中的活动记录模型产生"Getting unknown property"
错误的原因。
有没有办法发布一个活动表单的值,而不在数据库表中创建它的字段,或者在活动记录模型中定义它只是用表单发布值?
这是我的表格:
<?php
$form = ActiveForm::begin([
'action' => ['twit/update-reply'],
]);
?>
<?= $form->field($model,'twit')->textarea(['value' => $twit]); ?>
<?= $form->field($model,'id')->hiddeninput(['value' => $id]); ?>
<?= $form->field($model,'rid')->hiddeninput(['value' => $rid]); ?>
<?= Html::SubmitButton('بروز رسانی',['class' => 'btn btn-success green']); ?>
<?php ActiveForm::end(); ?>
此表单中的$form->field($model,'rid')
输入未在模型中定义,并导致上述错误。
我做错了什么?
答案 0 :(得分:1)
使用ActiveForm
时,您只能将Model
属性添加为字段。为了解决这个问题,你有两个解决方案:
发布没有ActiveForm
字段的隐藏输入,即替换
<?= $form->field($model,'id')->hiddeninput(['value' => $id]); ?>
与
<input type="hidden" name="id" value="<?= $id ?>" />
ActiveForm
在其名称中,主动显示模型的行为,例如,如果您在模型上为名为userEmail
的属性定义必须是电子邮件的规则,ActiveForm
检查您的规则userEmail
的格式类似于emailName@emailHost.emailDomain
(例如,更准确地说是([A-Za-z0-9\_\-]+)@([A-Za-z0-9]+).([A-Za-z0-9\_\-]{2,3})
),如果您的模型是您桌面上记录的实例,ActiveForm
使用保存的值在HTML表单上填充您的字段。