我正在实现用户可以更新其个人资料的功能。当用户单击“更新配置文件”时,将显示表单和文本字段,并将其所有值返回给用户。
但我无法获得“兴趣字段”,其中我将值编码为JSON并将其存储在数组字符串中。现在,在文本字段中检索它时,我使用json_decode
,这有助于我在文本字段中写入值。但是,一旦用户点击“保存”然后点击“更新”,所有值都将为空。
对于多个兴趣,文本字段由用户动态添加。这是我写的代码:
<div class="form-group" id="area_interest">
<h4>Area of Interest</h4>
<div style="display:inline-block">
<? $interest = json_decode($model->profile->interest,true) ? : [];
foreach($interest as $area_int) { ?>
<label>Enter Interest:</label>
<input name="$area_int" type="text" value="<?= $area_int ?>"/>
<? }
<div style="display:inline-block">
<input type="button" value="Add More Interest" onClick="addTextArea();">
</div>
</div>
</div>
动态添加更多文本框的功能:
function addTextArea(){
var div = document.getElementById('interests');
div.innerHTML += "<label>Enter Interest</label>"
div.innerHTML += '<?php echo $model->form->textBoxFor("interests[]"); ?> ';
div.innerHTML += "\n<br />";
}
该函数中的代码是:
$interests = isset($_POST['interests']) ? $_POST['interests']: [];
$_POST['interests'] = json_encode($interests);
我应该怎么写名字? 我不知道在哪里错过了一些重要的观点。非常感谢帮助。 TIA。
答案 0 :(得分:0)
<input name="$area_int" type="text" value="<?= $area_int ?>"/>
我认为名称是问题,如果在函数中你正在访问它应该有效的$_POST['$area_int']
值,但如果你正在访问$_POST['area_int']
,那么将找不到该值。
希望我的回答能帮到你。
-----评论后的所有这些-----
我看到方法$model->form->textBoxFor("interests[]")
正在使用该方法允许你创建一个新输入,所以我猜它echo
一个允许的javascript函数,如果输入是{{1 }}
在控制器上的功能中,您可以将其设为interests[]
,其中包含表单中添加的所有$_POST['interests']
,因此如何获取这些值?
当输入的名称为interests
时,php会将这些输入接受为数组,因此当您访问nameOfTheInput[]
时,您正在获取
$_POST['interests']
之后你应该处理这些值。
希望我的回答能帮到你。 但请尝试具体说明代码的工作方式。