在codeigniter中包含文件

时间:2013-01-24 22:43:29

标签: php codeigniter

我正在使用codeigniter创建一个网站,我想要包含菜单(选项)文件,以便我可以节省所有时间,从而在我需要的每个视图上独立粘贴代码。 或者即使有自定义函数的公共文件,我也可以放置代码并调用函数。 任何帮助。我的菜单选项如下。

 <h5>Admin Options</h5>
            <ul>
                <li><a href="">Portfolio</a>
                    <ul>
                        <li> <a href="category/addCategory">Add a Category</a></li>
                        <li> <a href="category/updateCategory">Edit/Delete Category</a></li>
                        <li> <a href="link/addLink">Add a Link</a></li>
                        <li> <a href="link/updateLink">Edit/Delete Link</a></li>
                    </ul>
                </li>

                <li>First</li>
                <li>First</li>
                <li>First</li>
                <li>First</li>

            </ul>

4 个答案:

答案 0 :(得分:2)

只需将您的HTML放在视图文件“options_view.php”中,只要您想要包含此HTML代码段,只需加载该视图:

<?php $this->load->view('options_view') ?>

答案 1 :(得分:1)

请参阅CodeIgniter's documentationPHP documentation

自我导向学习有一些东西可以说。

答案 2 :(得分:1)

模板化就是这个问题的答案。由于开箱即用的CI将任何视图视为其自己的页面,因此用户可以逐步加载其他视图,也可以将除了作为字符串加载的视图之外的所有视图包装到公共模板中。 这里只有一个库来实现这个:

http://williamsconcepts.com/ci/codeigniter/libraries/template/reference.html

就个人而言,我不会像狼一样逐步加载所有观点。这没有错,只是它可能导致可维护性问题。我会根据需要创建尽可能多的模板 - 例如,有些模板可能不需要选项视图 - 并使用每种方法加载正确的模板。

答案 3 :(得分:1)

正如你可以从答案中看到的那样,有很多方法可以做到这一点,但老实说,我没有看到模板库中的重点,因为它相对容易自己做。我为我的整个网站使用模板,因为这意味着我不必继续重写代码。以下是我的工作方式。

Template.php此文件加载模板的其他部分,它根据用户是否登录加载标题,以便我可以轻松添加用户菜单。

    <?php 
        if($this->session->userdata('is_logged_in'))
        {
            $this->load->view('templates/header-admin', $title);
        } else {
            $this->load->view('templates/header', $title);
        }
        $this->load->view('templates/sidebar',$sidebar_content);
        $this->load->view('pages/'.$main_content);
        $this->load->view('templates/footer'); 
    ?>

这些页面中的每一个都是静态html文件,或者在主要内容和sidebar_content的情况下,它们是变量。那么从控制器我加载我的视图(这是一个基本页面)

public function welcome()
{
    $data['main_content'] = 'welcome';
    $this->load->model('someModel');
    $data['someArray'] = $this->someModel->someFunction();
    $data['title']='Welcome to example.com';
    $data['sidebar_content'] = 'sidebar/no_sidebar';
    $data['additionalHeadInfo'] ='';
    $this->load->view('templates/template',$data);  
}

所以上面发生的是第一行是实际视图加载到主要内容这是一个php页面,除了网站的中间内容之外什么都没有。标题填写标题中的标题标签。侧边栏内容加载相应的sidebar.php页面(在这种情况下,它是一个空文件)。额外的头信息是我可以加载特定于单个视图的库或CSS页面。最后一行将它们结合在一起。

编辑 - 我添加了两行来添加可变数据。因此,您可以像正常一样调用模型并返回数据,但将其返回到$ data数组中的数组。然后在你的视图中你可以像这样访问它(例如,变量很明显,你可以使用模型返回的任何变量:

echo $someArray['userName'];

对于记录,正常的PHP包含语句在CI中运行得很好,它只比创建模板的意义要小得多。