如何将多维数组从视图传递到控制器?
How do you pass a multi dimensional array from view to controller?
将数据从控制器传递到视图很容易。此外,要将数据从视图传递到控制器,您需要表单标签。但是,如何从输入表单传递数组?有什么想法吗?这是数组的样子:
$test = array
(
array($employee_id[0],$name[0],$days_worked[0],$overtime_hours[0]),
array($employee_id[1],$name[1],$days_worked[1],$overtime_hours[1]),
array($employee_id[2],$name[2],$days_worked[2],$overtime_hours[2])
);
从我的 html 视图中,我得到了一个输入表单:
<input name="test" type="text" class="form-control" id="test" value="<?php echo $test;?>">
当我到达我的模型以测试它是否在数组中获取数据时:
$this->test = $_POST['test'];
echo $test = $_POST['test'];
我得到的只是一个字符串 "Array"。我无法访问数组中的内容。我需要帮助。
您的问题不清楚..您想将数组传递给您查看,还是将 HTML 输出到 INPUT 元素中?
这是两件不同的事情,因为一个只是在您的应用程序内部(在服务器上)传递一个数组,第二个是将它传递给您的表单数据,在浏览器中显示它,然后将表单发送到服务器并获取那里的数据。
对于第一个 - 我认为没有问题,因为传递变量没有问题
第二个——默认情况下不可能将多维数组传递到表单输入中。因为输入只有一维。
您可以使用一些转换函数传递数据,例如作为 JSON 字符串
value="<?php echo json_encode($test);?>"
然后像这样加载它:
$this->test = json_decode($_POST['test']);
但我猜这在前端没有意义,因为用户不会理解输入字段中显示的数据。
为了符合逻辑,我会将数据分组,然后相应地显示在更多输入字段中,例如
<input name="test[0][employee_id]" type="text" class="form-control" id="test" value="<?php echo $test[0][0];?>">
<input name="test[0][employee_name]" type="text" class="form-control" id="test" value="<?php echo $test[0][1];?>">
<input name="test[0][employee_days_worked]" type="text" class="form-control" id="test" value="<?php echo $test[0][2]?>">
<input name="test[0][employee_overtime]" type="text" class="form-control" id="test" value="<?php echo $test[0][3];?>">
但做得更好。这样你就可以创建将作为多维发送的东西。 php 脚本数组。
正如此处另一个答案所建议的那样,您可以看到 var_dump($test)
的结构
数组值不能直接在表单数据中传递。
你应该使用 json_encode。
在您的视图文件中
$encoded_text = echo json_encode($test);
<input name="test" type="text" class="form-control" id="test" value="<?php echo $encoded_text ;?>">
现在在你的模型中解码这个
$test = json_decode($test, $assoc = TRUE);
如果您在控制器上使用 serialize() 并在视图上使用 unserialize() ,您应该能够以相同的方式访问它。我相信这就是你要问的。
将数据从控制器传递到视图很容易。此外,要将数据从视图传递到控制器,您需要表单标签。但是,如何从输入表单传递数组?有什么想法吗?这是数组的样子:
$test = array
(
array($employee_id[0],$name[0],$days_worked[0],$overtime_hours[0]),
array($employee_id[1],$name[1],$days_worked[1],$overtime_hours[1]),
array($employee_id[2],$name[2],$days_worked[2],$overtime_hours[2])
);
从我的 html 视图中,我得到了一个输入表单:
<input name="test" type="text" class="form-control" id="test" value="<?php echo $test;?>">
当我到达我的模型以测试它是否在数组中获取数据时:
$this->test = $_POST['test'];
echo $test = $_POST['test'];
我得到的只是一个字符串 "Array"。我无法访问数组中的内容。我需要帮助。
您的问题不清楚..您想将数组传递给您查看,还是将 HTML 输出到 INPUT 元素中? 这是两件不同的事情,因为一个只是在您的应用程序内部(在服务器上)传递一个数组,第二个是将它传递给您的表单数据,在浏览器中显示它,然后将表单发送到服务器并获取那里的数据。
对于第一个 - 我认为没有问题,因为传递变量没有问题 第二个——默认情况下不可能将多维数组传递到表单输入中。因为输入只有一维。 您可以使用一些转换函数传递数据,例如作为 JSON 字符串
value="<?php echo json_encode($test);?>"
然后像这样加载它:
$this->test = json_decode($_POST['test']);
但我猜这在前端没有意义,因为用户不会理解输入字段中显示的数据。
为了符合逻辑,我会将数据分组,然后相应地显示在更多输入字段中,例如
<input name="test[0][employee_id]" type="text" class="form-control" id="test" value="<?php echo $test[0][0];?>">
<input name="test[0][employee_name]" type="text" class="form-control" id="test" value="<?php echo $test[0][1];?>">
<input name="test[0][employee_days_worked]" type="text" class="form-control" id="test" value="<?php echo $test[0][2]?>">
<input name="test[0][employee_overtime]" type="text" class="form-control" id="test" value="<?php echo $test[0][3];?>">
但做得更好。这样你就可以创建将作为多维发送的东西。 php 脚本数组。
正如此处另一个答案所建议的那样,您可以看到 var_dump($test)
的结构数组值不能直接在表单数据中传递。 你应该使用 json_encode。 在您的视图文件中
$encoded_text = echo json_encode($test);
<input name="test" type="text" class="form-control" id="test" value="<?php echo $encoded_text ;?>">
现在在你的模型中解码这个
$test = json_decode($test, $assoc = TRUE);
如果您在控制器上使用 serialize() 并在视图上使用 unserialize() ,您应该能够以相同的方式访问它。我相信这就是你要问的。