Yii2 添加一个不在模型中的表单字段

Yii2 Add a Form field not in model

据我们所知,

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

在 model/table 中添加连接到 'name_field' 的文本字段。

我想添加一个不在 model/table 中的字段,然后 运行 一些 JS 在失去焦点时计算其他字段。

首先如何添加未连接到模型的自由文本字段? 其次,有没有人有将 JS/Jquery 添加到 _form.php 的示例?

Html class contains the functions for generation of fields. In fact, your code above ends up calling Html::textInput()。添加字段

<?= Html::textInput("name", $value) ?>

要将 javascript 添加到视图,只需使用 registerJs():

$this->registerJs("alert('true');");

您可以使用与 ActiveField 相同的方式呈现字段,使用标签和 classes。例如,我们将 Cc 字段添加到 Mail 表单。

首先显示 To: 字段(在模型中):

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

让我们添加 Cc 字段(不在模型中):

<?= Html::beginTag('div', ['class' => 'form-group field-mail-cc']) ?>
<?= Html::label('Cc:', 'mail-cc', ['class' => 'control-label']) ?>
<?= Html::textInput('Mail[cc]', '', ['id' => 'mail-cc', 'class' => 'form-control']) ?>
<?= Html::endTag('div') ?>

class 和 id 名称 mail-ccfield-mail-cc 遵循 ActiveForm 命名模式。输入名称 Mail[cc] 将您的字段添加到 ActiveForm 组中,因此您可以使用通常的方式轻松检索它

$form = Yii::$app->request->post('Mail');