【问题标题】:Codeigniter - controller can't send data to viewCodeigniter - 控制器无法发送数据以查看
【发布时间】:2019-02-22 17:31:21
【问题描述】:

我遇到了这样的错误:

遇到 PHP 错误 严重性:通知

消息:未定义变量:任务

控制器

 public function show() {
    $data['tasks'] = array();
    $data['tasks'] = $this->Tasks_model->show_task()->result();
    $this->load->view('pages/all', $data);
 }

查看

<?php 
  if( isset($tasks) && ( is_array($tasks) && count($tasks)>0 ) ) {
    //echo"<pre>"; print_r($tasks); die();
    for($i=0;$i<count($tasks);$i++)
    { ?>
    <span><?php echo $task[0]['job']; ?></span><br />
   <?php } ?>
<?php } 
else { ?>
<span>No tasks records found.</span>
<?php } ?>

型号

public function show_task() {
    return $this->db->get('task');
}

我的代码有什么问题?

【问题讨论】:

标签: php codeigniter


【解决方案1】:

控制器

public function show() {
    $this->$data['tasks'] = array();
    $this->$data['tasks'] = $this->Tasks_model->show_task();
    $this->load->view('pages/all', $data);
}

查看

//这里也可以使用for循环来显示数据。

<?php 
if( isset($tasks) && ( is_array($tasks) && count($tasks)>0 ) )
{
    //echo"<pre>"; print_r($tasks); die();
    for($i=0;$i<count($tasks);$i++)
    { ?>
    <span><?php echo $task[0]['job']; ?></span><br />
   <?php } ?>
<?php } 
else { ?>
<span>No tasks records found.</span>
<?php } ?>

编辑 =>

型号

public function show_task() {
    $query = $this->db->get('task');
    if( $query->num_rows() > 0 ) //Always check you are getting result or not.
    {
        return $query->result_array(); //result_array() returns the query result as a pure array
    }
    else
    {
        return array();
    }
}

在这里你直接返回return $this-&gt;db-&gt;get('task');。因此,您在 View 中什么也得不到。 首先,您必须将 $this-&gt;db-&gt;get('task') 分配给变量,例如$query 并将结果数组传递给控制器​​ return $query-&gt;result_array();

参考 => https://www.codeigniter.com/userguide3/database/results.html#result-arrays

【讨论】:

  • 输出未找到任务记录。这意味着,我仍然无法获取数据。如果您想查看完整代码,请在此处:pastebin.com/YKjbgCr2
  • 是的。您没有从模型中获取数据。
  • @BeingShame 我已经更新了我的答案。请参考。
  • 结果仍然是“未找到任务记录。”。我开始认为问题出在其他地方。如果我不在视图中使用这些条件,错误将是“未定义的变量:任务”。
  • @BeingShame 我已经对控制器进行了更改。 $this-&gt;$data['tasks'] = $this-&gt;Tasks_model-&gt;show_task(); 之前这里没有 $this-&gt;
【解决方案2】:

控制器:

 public function show() {
    $data['tasks'] = array();
    $data['tasks'] = $this->Tasks_model->show_task();
    $this->load->view('pages/all', $data);
 }

型号:

public function show_task() {
    return $this->db->get('task')->result();
}

查看页面:

<?php 
if( isset($tasks) && ( is_array($tasks) && count($tasks)>0 ) )
{
    //echo"<pre>"; print_r($tasks); die();
    for($i=0;$i<count($tasks);$i++)
    { ?>
    <span><?php echo $task[0]['job']; ?></span><br />
   <?php } ?>
<?php } 
else { ?>
<span>No tasks records found.</span>
<?php } ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2019-03-18
    • 1970-01-01
    相关资源
    最近更新 更多