【发布时间】:2017-03-08 16:20:24
【问题描述】:
我想提交一个表单,其字段是一个未知数量元素的数组。
class DynamicForm extends Model
{
/** var string[] */
public elements[];
}
在有表单提交的视图中,我想添加一个具有“onclick”Javascript 功能的按钮,该按钮在表单innerHtml 中添加一个新字段。不幸的是,我找不到在我的 javascript 表达式中嵌入一些 PHP 代码的方法。这是我现在的位置:
<?php
$form = ActiveForm::begin([
'id' => 'test-form',
'layout' => 'horizontal',
'fieldConfig' => [
'errorOptions' => [
'role' => 'alert',
],
'horizontalCssClasses' => [
'label' => 'col-sm-3',
'offset' => 'col-sm-offset-3',
'wrapper' => 'col-sm-9',
'error' => '',
'hint' => '',
],
],
]);
$formField = $form->field($model, 'elements[]', []);
$JsFunction = new \yii\web\JsExpression(
"function addField() {
document.getElementById(\"test-form\").innerHTML += \"<?php echo $formField; ?>\";
};
addField();"
);
echo Html::button(
'Add element',
[
'class' => 'btn btn-primary',
'onclick' => $JsFunction,
]
);
?>
奇怪的是,如果我在innerHTML 中放入一个类似"<p>hello!</p>" 的字符串,它就可以完美运行。另一个奇怪的是,如果我把'php echo'命令生成的HTML代码,
'<input type=\"text\" id=\"dynamicform-elements\" class=\"form-control\" name=\"DynamicForm[elements][]\">'
它仍然有效!
虽然我认为为Yii::ActiveForm 手动输入 HTML 代码并不是一个很好的做法,但这就是我希望 PHP 来完成这项工作的原因。
提前感谢您!
【问题讨论】:
标签: javascript php html yii2 yii2-advanced-app