0

我正在使用 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

4 回答 4

2

只需将您的 HTML 放在视图文件“options_view.php”中,然后在您想要包含此 HTML 片段的任何地方加载该视图:

<?php $this->load->view('options_view') ?>
于 2013-01-24T22:46:16.583 回答
1

请参阅CodeIgniter 的文档PHP 文档

对于自主学习,有话要说。

于 2013-01-24T22:47:41.323 回答
1

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

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

就我个人而言,我不会像 Wolf 所说的那样逐步加载所有视图。除了它可能导致可维护性问题之外,这并没有什么问题。我会根据需要创建尽可能多的模板——例如,有些可能不需要选项视图——并为每种方法加载正确的模板。

于 2013-01-24T22:47:56.273 回答
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 中工作得很好,它只是比创建模板更没有意义。

于 2013-01-24T23:24:49.657 回答