【问题标题】:some wrong with CodeIgniter $this->load->viewCodeIgniter $this->load->view 出了点问题
【发布时间】:2017-01-11 06:54:22
【问题描述】:
public function admin($page = "admin")
{   

    $data['title'] = "admin";
    $data['menu'] = "admin";


    $this->load->view('tpl/header_admin',$data);
    $this->load->view('admin/'.$page,$data);

}

这是我正在尝试做的,标题和内容页面,但我不知道为什么它不起作用,如果我这样做了

public function admin($page = "admin")
{   

    $data['title'] = "admin";
    $data['menu'] = "admin";

    $this->load->view('tpl/header_admin',$data);

}

public function admin($page = "admin")
{   

    $data['title'] = "admin";
    $data['menu'] = "admin";

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

}

一切正常,我可以在 admin 或 header 中看到内容,但如果我将两个 load->view 放在一起,它只会显示 $this->load->view('admin/'.$page, $数据);标题只是不会显示

这是CI网站所说的应该做什么:

$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);

我看不出有什么不同

顺便说一句:如果我访问 /admin ,标题不会显示,但如果我访问 /admin/list ,它将显示...

这是第一次发生在我身上,为什么?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    像这样试试..

    <?php
    public function admin($page = "admin")
    {   
    
        $data['title'] = "admin";
        $data['menu'] = "admin";
    
    
        $data['header'] = $this->load->view('tpl/header_admin',$data,TRUE);//takes contains as string
        $this->load->view('admin/'.$page,$data);
    
    }
    

    在你的视图里面 admin/admin.php

    if (isset($header))
    {
        echo $header;
    }
    //Then other codes
    

    $data['header'] = $this-&gt;load-&gt;view('tpl/header_admin',$data,TRUE); 该语句将包含tpl/header_admin.php 作为带有html标签的字符串。

    【讨论】:

    • public function view($page = 'home') { if ( !file_exists(APPPATH.'views/pages/'.$page.'.php')) { // 哎呀,我们不没有一个页面!显示_404(); } $data['title'] = ucfirst($page); // 第一个字母大写 $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('模板/页脚', $data); } 这就是 CI 所说的 .. 我也在做同样的事情......怎么不工作..
    【解决方案2】:

    函数 $this->load->view()
    将输出一个 HTML 标头。所以你不能输出标题两次。
    正确的方法是
    控制器文件

        public function admin($page = "admin")
        {   
            $data['title'] = "admin";
            $data['menu'] = "admin";
            $this->load->view('admin/index'.$page,$data);
        }
    

    查看文件 admin/index.php

        <html>
        <?php include '../tpl/header_admin.php' ?>
        template context.....
        </html>
    

    这是使用模板文件碎片的方式

    【讨论】:

    • $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('模板/页脚', $data);这就是 CI 所说的 .. 我看不出有什么不同
    • 无论如何,如果你在你的模板文件中使用Include,那将会更加灵活和快速。如果您想知道它为什么不起作用,请发布模板代码。
    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2011-08-06
    相关资源
    最近更新 更多