未定义的变量$ subview codeigniter

时间:2014-02-20 10:34:45

标签: php html codeigniter

您好我正在尝试创建一个CMS系统,但是当我尝试从控制器调用$subview到该视图文件时显示错误

    Severity: Notice

    Message: Undefined variable: subview

    Filename: admin/_layout_main.php

这是控制器文件

<?php
class User extends Admin_Controller {

    public function __construct() {

        parent::__construct();

    }


    public function index ()
    {
        // Fetch all users
        $this->data['users'] = $this->user_m->get();
        // Load view
        $this->data['subview'] = 'admin/user/index';
        $this->load->view('admin/_layout_main', $this->data);
    }


    public function edit($id = NULL){

    }
    public function delete($id){
    }
    public function login() {

    $dashboard = 'admin/dashboard'; 
    $this->user_m->loggedin() == FALSE || redirect($dashboard); 

    $rules= $this->user_m->rules;
    $this->form_validation->set_rules($rules);
    if ($this->form_validation->run()==TRUE) {
    if ($this->user_m->login()==TRUE){
        redirect($dashboard);
        }
        else{
            $this->session->set_flashdata('error'. 'That Email & Password Combination does exist'); 
            redirect('admin/user/login','refresh');
        }
    }
    $this->data['subview'] = 'admin/user/login';
    $this->load->view('admin/_layout_modal',$this->data);
    }

    public function logout(){
    $this->user_m->logout();
    redirect('admin/user/login');
    }


}

我的查看文件_layout_main.php这是我尝试调用$ subview

的地方
<?php $this->load->view('admin/components/page_head')?>
<body>
        <div class="navbar navbar-static-top navbar-inverse">
          <div class="navbar-inner">
              <a class="brand" href="<?php echo site_url('admin/dashboard');?>"><?php echo $meta_title;?></a>
            <ul class="nav">
              <li class="active"><a href="<?php echo site_url('admin/dashboard')?>">Dashboard</a></li>
              <li><?php echo anchor('admin/page','pages')?></li>
              <li><?php echo anchor('admin/users','users')?></li>
            </ul>
          </div>
        </div>

<div class = "container">
<div class = "row">
<!-- Main Column -->
    <div class ="span9">


    <?php $this->load->view($subview); ?>
    </div>
    <!-- Sidebar -->
         <div class ="span3">
             <section>
              <?php echo mailto('********@gmail.com','<i class="icon-user"></i>********@gmail.com');?><br>
             <?php echo anchor('admin/user/logout','<i class="icon-off"></i>logout');?> 
            </section>
        </div>
    </div>
</div>      
<?php $this->load->view('admin/components/page_tail')?>

感谢您的帮助,谢谢

3 个答案:

答案 0 :(得分:0)

您正在设置视图路径,如

$data['subview'] = 'admin/user/index';

正在加载

$this->load->view('admin/_layout_main', $data);

请注意,您的布局位于admin中,并且您正在错误地发送视图路径。路径应为user/index。 我认为这是问题所在。

所以你的观点路径应该是

$data['subview'] = 'user/index';

答案 1 :(得分:0)

我正在做这件事!如果这是来自Van Ray Hosea Gultom在YouTube上的相同教程那么。仪表板控制器中已有index()功能,因为我们两次调用_layout_main视图include_once()不允许这样做。我移动了这段代码:

    $this->data['users'] = $this->user_m->get();
    $this->data['subview'] = 'admin/user/index';

从用户控制器页面中的index()到仪表板控制器页面中的index()。 我对此很新,我不确定这是否是正确的方法,但它解决了问题。

答案 2 :(得分:-1)

您将main描述为您的视图文件,但是您将其传递给layout_main 检查出来

layout_model或layout_main