我有一个问题涉及两种不同类型数据。我在Yii中有一个视图,它有一个表单控件。我想发送一个数组,一个数组的数组到控制器,到我的create动作。数组为:$arraySons = ('albert','francis','rupert');数组的数组是$arrayFather = ('1'=>array(6,7,8));我必须使用一些控件,这样表单才会以$_POST?格式发布......否则无法完成,我必须使用JavaScript?
$arraySons = ('albert','francis','rupert');
$arrayFather = ('1'=>array(6,7,8));
$_POST
zsbz8rwp1#
通常,在HTML表单中,您可以通过使多个字段具有相同的名称和数组表示法来创建数组。
<input name="sons[]"> <input name="sons[]">
当你提交表单时,$_POST ['sons']将是一个数组,并且可以如下处理:
foreach ($_POST['sons'] as $son) { echo 'Son of the father is '.$son."\n"; }
jfgube3f2#
你可以创建你的形式在@crafter的答案。我只是写更多的细节:
<input type="hidden" name="sons[]" value="albert"> <input type="hidden" name="sons[]" value="rupert">
等等然后对父亲们做类似的事情:
<input type="hidden" name="father[1][]" value="6"> <input type="hidden" name="father[1][]" value="7"> <input type="hidden" name="father[1][]" value="8">
但是如果用户不需要查看数据,您可以准备一个包含数据的JSON对象,并将其发布到1个字段中,这对我来说似乎容易得多
<input type="hidden" name="father" value="<?= json_encode($arrayFather); ?>"> <input type="hidden" name="sons" value="<?= json_encode($arraySons); ?>">
然后在你的动作中你可以从post中得到数据并用json_decode解码
json_decode
$myArrayFather = json_decode($_POST['father']); $myArraySons = json_decode($_POST['sons']);
2条答案
按热度按时间zsbz8rwp1#
通常,在HTML表单中,您可以通过使多个字段具有相同的名称和数组表示法来创建数组。
当你提交表单时,$_POST ['sons']将是一个数组,并且可以如下处理:
jfgube3f2#
你可以创建你的形式在@crafter的答案。我只是写更多的细节:
等等
然后对父亲们做类似的事情:
但是如果用户不需要查看数据,您可以准备一个包含数据的JSON对象,并将其发布到1个字段中,这对我来说似乎容易得多
然后在你的动作中你可以从post中得到数据并用
json_decode
解码