1

私はCodeigniterを初めて使用します。テンプレートをどのように統合しますか?何かのようなもの:

header_template.phpなど...

今、私はこのようにしています:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Page extends CI_Controller {

    public function index()
    {   
        $this->load->view('head_template.php');
        $this->load->view('header_template.php');
        $this->load->view('navigation_template.php');
        $this->load->view('page_view.php');
        $this->load->view('footer_template.php');

    }
}

これは問題ありませんが、もっと良い方法が必要です。これをすべてのコントローラーに含める必要がありますが、これは少し怖いです。

テンプレートエンジンについては知っていますが、それは私が探しているものではありません。さらに、Codeigniterのドキュメントでは遅いと書かれています。

4

5 に答える 5

2

このテンプルエンジンを非常に簡単で優れたドキュメントにも使用してください

CIとtempleteエンジンを使用したサンプルアプリケーションについては、このgitリポジトリを確認してください

github.com/mrsrinivas/ci_template

于 2013-01-03T09:16:30.277 に答える
1
 public function index()
{   
    $data["header"]     = $this->load->view('head_template.php',"",true);
    $data["navigation"] = $this->load->view('navigation_template.php',"",true);
    $data["footer"] = $this->load->view('footer_template.php',"",true);
    $this->load->view('page_view.php', $data, false);
}

「page_view.php」内

<html>
<body>
<?php
  echo $header;
  echo $navigation;
  echo $footer;
?>
</body>
</html>

詳細については、-http://www.codeignitor.com/user_guide/general/views.htmlをご覧ください。

テンプレートを含めるためのサンプルとして含まれているコード-

class Template extends CI_Controller{

 public function __construct(){
    parent :: __construct();
}

/**
 * TODO: Get the template from database or some configuration file
 * 
 * 1) Get Template hook
 * 2) Get Header
 * 3) Get Footer
 * 4) Get other hooks
 */
public function loadTemplate($viewName, $headerData = "", 
                            $viewData="", $footerData=""){
    $headerData["userId"] = (is_numeric($this->CI->session->userdata("userId")))
                            ? $this->CI->session->userdata("userId") : null;                            
    $this->CI->load->view('header/header', $headerData);
    $this->CI->load->view($viewName, $viewData);
    $this->CI->load->view('footer/footer', $footerData);
}
}

//テンプレートクラスは追加のコードで終了します

// Login.php that extends template class
class Login extends Template {
  public function Login() {
    parent :: __construct();
}

  public function getUserDetails(){
    $userDetails = $this->loadTemplate("myDataNeedToshow");

}
}
于 2013-01-03T09:26:04.650 に答える
0

前のコメンターによってリストされたそのテンプレートエンジンは素晴らしかったですが、かなり長い間更新されておらず、あなたの目的が何であるかについてはやり過ぎかもしれません。

それはうまくいくかもしれませんが、この非常にシンプルなレイアウトライブラリがあなたが探しているものだと思います。

それは非常に基本的ですが、仕事を成し遂げます。以前は複数の「コンテンツセクション」を簡単に使用できるように拡張しましたが、通常はhtmlヘッダーとフッターをすばやく取得するためだけに使用します。

于 2013-01-03T09:24:52.623 に答える
0

私がしていることは、viewsフォルダーにtemplate.phpというファイルがあります。これは次のようになります。

views/template.php:
<?= $this->load->view('header_view');?>
<?= $this->load->view($load_page);?>
<?= $this->load->view('footer_view');?>

次に、コントローラーで次のように呼び出します。

page.php:

$page = array(
        'meta_title' => 'Register Package',
        'load_page' => 'package_view'
        );
        $this->load->view('template', $page);

もっと良い方法があると思いますが、時間があれば調べます

于 2013-01-06T20:07:11.457 に答える
0

ヘルパーは、クリーンな統合を支援します。私のサンプルコード:

ヘルパー関数

コントローラ

于 2013-07-13T05:30:34.237 に答える