Codeigniter页眉和页脚包括

时间:2016-02-02 13:09:11

标签: php codeigniter url-routing

我试图从AngularJS转移到PHP模型 - 视图 - 控制器框架,但有些东西并不适合我,因为我做了很多重复。在角度你可以做简单包括页脚和标题,所有魔法发生在视图中,具体取决于路线。但在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');
    }

2 个答案:

答案 0 :(得分: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以了解如何为所有这些文件设置变量。

答案 1 :(得分:0)

  

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

<强>控制器

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);