0

我的 ci 设置中的目录结构是

application
system
    public_html

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

但是发生了这个错误

遇到 PHP 错误 严重性:警告

消息:include(): 未能打开 '../_mainMenu.php' 以包含 (include_path='.:/usr/lib/php:/usr/local/lib/php')

文件名:home/index.php

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

4

2 回答 2

2

您不会在 codeigniter 中包含视图,而是通过以下方式加载它们:

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

如果你打算使用它,你应该阅读文档。

于 2013-10-28T11:54:43.357 回答
1

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

$this->view('your_file'); 

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

也请阅读这个这个

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

例如,您想从数据库中获取菜单项,还要检查单击的菜单项等,那么最好在父控制器中执行此操作并从该父控制器扩展您的所有控制器。检查以下骨架代码:

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 扩展的所有控制器中可用。

我希望这将有所帮助。

谢谢

于 2013-10-28T12:22:31.310 回答