2013-01-24 89 views
0

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

回答

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工作得很好,它只是使比创建模板要少得多。

+0

谢谢..我还有一个问题,如果我想将某些数据传递给该视图,以便我可以在视图中显示它们,该怎么办? 在我们的例子中说,我需要传递一个$ data数组到欢迎视图中,然后在该视图中显示该数组元素。我怎么做? – prakashchhetri

+0

我将编辑答案,但这只是添加到我们已创建的数据变量的问题。 –

+0

是的,请进行编辑..我是codeigniter中的新成员,对于这个问题,我一直在摸索着我的头几个小时。谢谢:) – prakashchhetri

2

只要把你的HTML视图中的文件“options_view.php”以及任何你想包括这个HTML片段只需加载这一观点:

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

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

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

个人而言,我不会逐步加载所有的意见,沃尔夫状态。除了可能导致可维护性问题之外,没有任何问题。我会根据需要创建尽可能多的模板 - 例如,有些模板可能不需要选项视图,并使用每种方法加载正确的模板。