codeigniter上的未定义变量

时间:2017-06-19 08:07:35

标签: php html codeigniter-3

我有一个在codeigniter中开发的项目。

项目是这样的:

-root

--controller 

---Slider.php

--models

---My_data.php

--views

---slider_view.php

---giris.php

Slider.php

public function manset_al(){
    $title['title']='manşet listesi';
    $this->load->model('My_data');
    $data['manset']= $this->My_data->get_manset();
    $this->load->view('slider_view' ,$data);
}  

My_data.php代码是;

public function get_manset() {
    //  $sorgu = 
    //  mysql_query("select * from manset, haberler 
    //  where manset.onay='1' and manset.link=haberler.id and haberler.onay='1'
    //  order by haberler.id desc");
    $this->db->select('*');
    $this->db->from('manset as man, haberler as hab');
    $this->db->where('man.link=hab.id');
    $this->db->where('hab.onay=1');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        return $query->result();
    } else {
        return $query->result();
    }

slider_view.php代码是:

foreach($manset as $row){ 
    $baslik     =$row->baslik;
    $icerik     =$row->icerik;
    $link       =$row->link;
    $img_path   =$row->img_path;
    $giris      =$row->giris;
    $cikis      =$row->cikis;
         echo ' 

        <div>
           <a href="?pid='.$link.'">  <img data-u="image" src="'.$img_path.'"/></a>
          <div data-u="thumb"> <a href="?pid='.$link.'">  <h5 style="color:white; margin:10px;">'.$baslik.' </h5> </a></div>  
        </div>';
       } 

现在我打电话了

http//example.com/index.php/Slider/manset_al

每个想法都没问题 - 滑块正在运行。

但是当我使用此代码获取giris.php中的滑块时;

$this->load->view('slider_view');

它没有运行并说:undefined变量manset;

怎么能解决它?

谢谢。

1 个答案:

答案 0 :(得分:0)

我们缺少一些细节来快速解决这个问题:即giris.php是如何调用的?没有这些细节,我只能给出一般答案。

此错误表示您尝试访问模板文件中尚未传递给模板系统的数据。例如,在您的控制器(Slider.php)中,您将数据传递到模板:

$this->load->view('slider_view' ,$data);

$data是重要的部分:codeigniter获取该数组中的每个条目,并在模板系统中创建一个名称对应于每个键名称的变量。因此,foreach( $manset as $row )有效,因为$data有一个名为manset的密钥,其中包含每一行。您可以在giris.php中看到您明确向模板发送任何数据:

$this->load->view('slider_view');

注意缺少第二个参数。当然,您的文件结构意味着giris.php本身就是一个视图文件,这意味着调用giris.php的任何控制器方法都需要将数据发送到视图。所以一般来说,这就是答案:无论控制器最终调用giris.php,都需要将滑块信息发送到模板系统,但事实并非如此。如果没有关于giris.php实际调用方式的更多细节,那就是我能得到的具体内容。