将数组数据从视图传递到控制器并反向 php codeigniter
Posted
技术标签:
【中文标题】将数组数据从视图传递到控制器并反向 php codeigniter【英文标题】:Passing array data from view to controller and reverse php codeigniter 【发布时间】:2018-03-03 11:52:58 【问题描述】:我正在尝试使用 php codeigniter 将数据从视图传递到控制器。这是我的表单视图:
<form method="POST" action="<?php echo base_url()?>downloadfiles">
<p>Download file</p>
<p>Browse zip file</p>
<input type="text" name="data" value="<?= $data; ?>" style="display: none">
<input type="submit" name="downloadfiles" value="Download" />
</form>
在 downloadfiles.php - 控制器中,我尝试通过 POST 方法获取数组 $data 并将其传递回 download_success.php 视图:
if ($this->input->post('downloadfiles'))
$data = $_POST['data'];
$this->load->view('upload/download_success', $data);
这是我在 download_success.php 中的代码:
<?php
if(!empty($data))
print_r($data);
?>
当我在表单视图中运行代码时,它返回错误数组到字符串转换,而在 download_success 视图中,它没有打印任何内容。我哪里错了?
【问题讨论】:
在您的控制器中替换$data = $_POST['data'];
with $data = array('my_data' => $_POST['data'] );
并在视图中替换 $data
为 '$my_data'
我做了,它返回了同样的错误。
我在下面的答案中更新了脚本。
【参考方案1】:
这是因为你在视图中传递了一个字符串变量,而 CodeIgniter 将它视为一个数组。
MyController.php
if ($this->input->post('downloadfiles'))
$view_data = array('my_data' => $this->input->post('data') );
$this->load->view('upload/download_success', $view_data);
my_view.php
if(!empty($my_data))
print_r($my_data);
你的表格会是这样的:
//如果 $my_data 是一个数组,那么您可以 print_r($my_data) 并显示您想要在视图中显示的所需值。
<form method="POST" action="<?php echo base_url()?>downloadfiles">
<p>Download file</p>
<p>Browse zip file</p>
<input type="text" name="data" value="<?=$my_data?>">
<input type="submit" name="downloadfiles" value="Download" />
</form>
试试这个,希望对你有帮助。
【讨论】:
我还在表单中打印了 $my_data 数组来测试数组中的数据。它打印正确。但在 my_view.php 中它不打印任何内容。 嘿更新的是我在本地系统上执行的代码,但它没有给我这个错误。 好的,您是遇到错误还是只是为空$my_data
?
它只是返回空的 $my_data。
在您的表单中,您将输入字段隐藏,那么您如何在其中传递值?以上是关于将数组数据从视图传递到控制器并反向 php codeigniter的主要内容,如果未能解决你的问题,请参考以下文章
将 JavaScript 数组从视图传递到 Laravel 控制器