web-dev-qa-db-ja.com

codeigniterを使用したphpテンプレート

私は現在codeigniterでウェブサイトアプリケーションを開発しています。PHP/CodeIgniterで何かを実行して、ウェブサイトの個別のセクションに共通のテンプレートを作成できます。私はヘッダー/フッターを別のphpファイルに保持し、個別に含めます。

よくわからないのは、ヘッダーの下とフッターの上にあるコンテンツです。このWebサイトアプリケーションには多くの異なるページが含まれるため、これを行うための最良の方法を理解するのに苦労しています。

4
JaPerk14

私は通常、すべてのページにヘッダーとフッターの両方を含める必要はなく、「レイアウト」ファイルを作成することを好みます。より柔軟です。

これが私のプロジェクトの1つからのスニペットです。

_ob_start();
include '../views/'.$templateFile;
$pageContent = ob_get_clean();
include '../views/layouts/'.$layoutFile;
_

必要なのは、出力バッファリングを有効にし、テンプレートを含め、ob_get_clean()を呼び出してテンプレートのコンテンツを取得し、それを変数に入れることだけです。変数に入れたら、メインレイアウトファイルを含めることができます。これにより、内部のどこかに_$pageLayout_がエコーされます。

例えば。、

_<html>
<head>
    <title>Your Site</title>
</head>
<body>
    <!-- header here -->
    <?= $pageContents ?>
    <!-- footer here -->
</body>
</html>
_

とはいえ、確かにCode Igniterにはある種のテンプレートが組み込まれています。よくわかりません。 編集:どうやら しない 。本当にばかげている。キャッシングを使用すると、Niceテンプレートエンジンのパフォーマンスコストは無視できます。

3
mpen

私が最もよく使用するのは、次のようなコントローラーの3つ(またはそれ以上)のビューです。

class Mycontroller extends CI_Controller {
    public function index() {
        $headerData['title'] = 'Title of the page';
        $yourData['content'] = 'Everything you want to do inside your controller';

        $this->load->view('template/header',$headerData);
        $this->load->view('template/page',$yourData);
        $this->load->view('template/footer');
    }
}

このようにして、たとえば、ヘッダーファイルにタイトルを設定することもできます。

編集:これを、たとえばメニュービューなどで拡張して、さらに分離することができます。ビューを正しい順序でロードするようにしてください。

1
trizz

Hook を使用するか、すべてのメソッドでパラメーターを指定できます。例:

Class My_controller extends CI_Controller{

    public function index(){
        $data = array(
            'container' => 'contain'
        );

        $this->load->view('base_view', $data);
    }

}

また、base_view.php(メインビューとして)送信した変数の値。

<html>
<head>
    <title>Your title here</title>
</head>
<body>
    <header></header>

    <section id="container">
        <?php $this->load->view($container); ?>
    </section>

    <footer></footer>
</body>

お役に立てれば幸いです。

1
Aldi Unanto

私はいつもCodeIgniterとこのテンプレートライブラリでシステムを作成するために使用していました: http://www.williamsconcepts.com/ci/codeigniter/libraries/template/

使い方は非常に簡単で、$ this-> load-> view()メソッドのみを使用するなど、使用している手法よりも優れています。

0
Andrius