包括codeigniter中的文件

时间:2013-10-28 11:50:46

标签: php codeigniter

我的ci设置中的

目录结构是

application
system
    public_html

我的家庭控制器渲染视图(/ home / index)现在我想在索引视图中渲染_mainMenu.php,它保存在家外,所以我尝试在/ home / index view <?php include '../_mainMenu.php' ?>

但发生此错误

  

遇到严重错误:警告

     

消息:include():无法打开'../_mainMenu.php'以包含   (include_path中= ':/ usr / lib中/ PHP:在/ usr /本地/ LIB / PHP')

     

文件名:home / index.php

如果我将mainMenu.php放在/ home目录中并调用<?php include '_mainMenu.php' ?>一切正常,但我希望所有页面都可以访问此文件。

2 个答案:

答案 0 :(得分:2)

您在codeigniter中不包含通过以下方式加载的视图:

$this->load->view('name');

如果你打算使用它,你应该阅读docs

答案 1 :(得分:1)

如果文件是视图文件并且您想要在所有页面上访问它,那么您可以创建一个视图文件,然后使用以下语法将它们加载到视图中。

$this->view('your_file'); 

请注意,在CI中,我们在所有视图中都有视图对象,因此我们不会像在控制器中使用那样使用加载对象。

另请阅读thisthis

但是如果你的文件不是一个视图文件并且有一些应该在所有页面上运行的其他公共代码,那么创建一个父控制器并将所有代码放在那个父控制器的构造函数中会很棒。

例如,您希望从数据库中获取菜单项,还要检查单击的菜单项等等,然后在父控制器中执行此操作并从该父控制器扩展所有控制器将非常棒。检查以下框架代码:

class FrontController extends CI_Controller {

  public function __contstruct()
   {
        parent::__construct();  //Please note to call the CI_Controller constructor as always. 

      //place all your common code here
   }

} //End of FrontController

现在让我们考虑另一个像HomeController这样的控制器:

class HomeController extends FrontController {


   public function index() {

       //the index function
     }
 }

现在我家控制器你可以清楚地看到HomeController是从FrontController扩展的。现在,放置在FrontController构造函数中的所有公共代码都将在从FrontController扩展的所有控制器中可用。

我希望这会有所帮助。

谢谢