【问题标题】:Codeigniter header and footer includeCodeigniter 页眉和页脚包括
【发布时间】:2016-02-02 13:09:11
【问题描述】:

我正在尝试从 AngularJS 迁移到 PHP Model-View-Controler 框架,但有些东西不适合我,因为我做了很多重复。在 Angular 中,您可以对页脚和页眉进行简单的包含,并且所有的魔法都会在视图中发生,具体取决于路径。但是在 Codeiginiter 中,每个视图都需要包含页眉和页脚。有没有什么好的做法,你不必做很多重复

在 angularjs 中我很简单。

    <div ng-include='"templates/header.html"'></div>
    <div ng-view></div>
    <div ng-include='"templates/footer.html"'></div>

这就是路由

 .when("/", {
        templateUrl: "partials/home.html",
        controller: "PageCtrl"   
    })
    // Pages
    .when("/home", {
        templateUrl: "partials/home.html",
        controller: "PageCtrl",
    })
    .when("/about", {
        templateUrl: "partials/about.html",
         controller: "PageCtrl"
    })

这就是 CodeIgniter 的做法

     public function home(){ 
    $this->load->view('templates/header');
    $this->load->view('about');
    $this->load->view('templates/footer');
    }
   public function about(){ 
    $this->load->view('templates/header');
    $this->load->view('index');
    $this->load->view('templates/footer');
    }

【问题讨论】:

    标签: php codeigniter url-routing


    【解决方案1】:

    您可以放在文件的顶部和底部:

    查看文件:

    <?php
    $this->load->view('templates/header');
    // your main file (index;about etc)
    $this->load->view('templates/footer')
    

    所以,在控制器中你可以只加载主文件,即

    控制器文件:

    public function home()
    {
        // $this->load->vars($data)
        $this->load->view('index');
    }
    

    还要研究 Loader class 以了解如何为所有这些文件设置变量。

    【讨论】:

    • 是的,这不是一回事。在加载整个文档时,我只想加载视图
    • 如果这解决了您的问题,您也可以接受答案。 :)
    【解决方案2】:

    在您的控制器中,您可以使用下面给出的简单方法 为所有页面指定页眉和页脚。

    控制器

    class Home extends CI_Controller {
        public function index()
        {   
            $headerData = array(
                "pageTitle" => "Home",
                "stylesheet" => array("home.css")
            );
    
            $footerData = array(
                "jsFiles" => array("home.js")
            );
    
            $viewData = array(
                "viewName" => "home",
                "viewData" => array(),
                "headerData" => $headerData,
                "footerData" => $footerData 
            );
        $this->load->view('template',$viewData); // load `Home` view to template file in view folder.
    }
    

    查看 (template.php)

    $this->load->view("includes/header.php",$headerData);
    
    $this->load->view($viewName.".php",$viewData);
    
    $this->load->view("includes/footer.php",$footerData); 
    

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多