【问题标题】:Passing variable from controller to view not working codeigniter从控制器传递变量以查看不工作的codeigniter
【发布时间】:2014-05-04 12:33:22
【问题描述】:

我一直在整个互联网上搜索这个问题,但我似乎无法找到一个好的答案。我正在使用 codeigniter 框架版本 2.1.4。

我有模型:company.php 和 tbl_name:公司

<?php
class Company extends CI_Model 
{
    public  function __construct()
    {
        $this->load->database();
    }


    public function getCompany(){

    $q = $this->db->get('company');

        if($q->num_rows() > 0)
        {
          foreach ($q->result() as $row)
          {
            $data[] = $row;
          }
          return $data;
        }
    }

}

我有控制器:home.php,我可以在其中调用我创建的模型。

public function getAll(){
    $this->load->model('company');
    $data['results'] = $this->company->getCompany();
    $this->load->view('branch', $data);
}

最后我有视图:branch.php,我可以在其中查看数据库中的数据

<?php

if(!empty($results))
    {

      foreach($results as $res) 
      {
        echo "Name: ".$res->company;
      }
    } 
 ?>

现在这是问题:当我浏览控制器 localhost/app/home/getAll 时,它工作正常,因为我可以从数据库示例中看到数据:名称:ABC 公司,但是当我浏览视图时 localhost/app/home /branch 我在下面收到此错误。

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: results

Filename: views/branch.php

Line Number: 11
1

你能帮帮我吗?谢谢

【问题讨论】:

  • 从数据库获取数据的代码位于 getAll() 方法中。为什么您希望它在您访问其他路线时运行?请添加您的主/分支事物控制器方法
  • 谢谢你的工作就像一个魅力! :D @RonniSkansing
  • np。我已经添加了答案。

标签: php codeigniter


【解决方案1】:

像 getall() 方法一样,您应该在同一个控制器中拥有方法分支。

    public function getAll(){
        $this->load->model('company');
        $data['results'] = $this->company->getCompany();
        $this->load->view('branch', $data);
    } 

    public function branch(){
        $this->load->model('company');
        $data['results'] = $this->company->getCompany();
        $this->load->view('branch', $data);
   }

错误是因为您没有将 data['result'] 传递给查看。

【讨论】:

【解决方案2】:

用途:

if(isset($results)) 

代替:

if(!empty($results))

在你看来,branch.php

【讨论】:

    【解决方案3】:

    试试这个

    $this->load->view('branch', array('data' => $data));
    

    【讨论】:

      【解决方案4】:

      你可以试试这个替代方法

      将您的公司模式更改为:

      public function getCompany(){
      
         $q = $this->db->get('company');
      
          return $q->result_array();
      }
      

      将您的视图更改为:

      foreach($results as $res) 
        {
          echo "Name: ".$res['company'];
        }
      

      将您的公司模式更改为:

      public function getCompany(){
      
         $q = $this->db->get('company');
      
          return $q->result();
      }
      

      将您的视图更改为:

      foreach($results as $res) 
        {
          echo "Name: ".$res->company;
        }
      

      【讨论】:

        猜你喜欢
        • 2016-07-06
        • 2017-03-15
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-16
        • 2012-12-22
        相关资源
        最近更新 更多