在yii2中发布hiddeninput的问题

时间:2016-01-02 06:57:27

标签: php forms yii2

我试图用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')输入未在模型中定义,并导致上述错误。

我做错了什么?

1 个答案:

答案 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表单上填充您的字段。