YII通过表单发送从视图到控制器动作的数组或数组的数组

vwoqyblh  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(140)

我有一个问题涉及两种不同类型数据。
我在Yii中有一个视图,它有一个表单控件。我想发送一个数组,一个数组的数组到控制器,到我的create动作。
数组为:$arraySons = ('albert','francis','rupert');
数组的数组是$arrayFather = ('1'=>array(6,7,8));
我必须使用一些控件,这样表单才会以$_POST?格式发布......否则无法完成,我必须使用JavaScript?

zsbz8rwp

zsbz8rwp1#

通常,在HTML表单中,您可以通过使多个字段具有相同的名称和数组表示法来创建数组。

<input name="sons[]">
<input name="sons[]">

当你提交表单时,$_POST ['sons']将是一个数组,并且可以如下处理:

foreach ($_POST['sons'] as $son) {

    echo 'Son of the father is '.$son."\n";

}
jfgube3f

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解码

$myArrayFather = json_decode($_POST['father']);
$myArraySons = json_decode($_POST['sons']);

相关问题