はじめに
この記事は CodeIgniter Advent Calendar 2017 5日目です。
4日目の記事は自分が投稿した『プロファイラを外部ファイル出力できるようにする』でした。
■ load->view
でビューファイルからビューを呼び出す
ビュー — CodeIgniter 3.2.0-dev ドキュメント
/application/views/echo_test.php
<pre>
_________ .___ .___ .__ __
\_ ___ \ ____ __| _/ ____ | | ____ ____ |__|_/ |_ ____ _______
/ \ \/ / _ \ / __ | _/ __ \ | | / ___\ / \ | |\ __\_/ __ \ \_ __ \
\ \____( <_> )/ /_/ | \ ___/ | | / /_/ >| | \| | | | \ ___/ | | \/
\______ / \____/ \____ | \___ >|___| \___ / |___| /|__| |__| \___ > |__|
\/ \/ \/ /_____/ \/ \/
</pre>
<?= $temp; ?>
コントローラで使用されるイメージがあるかもしれない load->view
ですが、たとえば上のようなビューの断片を用意したとき、下のようにすると別のビューファイルからでも呼び出してやることができます。
/application/views/welcome_message.php
<!-- 前略 -->
<?php $this->load->view('echo_test', ['temp' => 'echo test']); ?>
<!-- 後略 -->
今回はもう一歩進めてCakePHPっぽく、ビューの断片をelementフォルダにまとめることにします。
■ ビューの同じ記述をまとめる(CakePHPっぽいエレメントの実装)
1)CI_Loaderクラスを継承して関数elementを用意する
/application/core/MY_Loader.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Loader extends CI_Loader {
public function element($view, $vars = array(), $return = false)
{
return $this->view('element/' . $view, $vars, $return);
}
}
2)/application/views/にelementフォルダを作成して適当なファイルをでっちあげる
/application/views/element/echo_test.php
<pre>
.__ __
____ | | ____ _____ ____ ____ _/ |_
_/ __ \ | | _/ __ \ / \ _/ __ \ / \ \ __\
\ ___/ | |__\ ___/ | Y Y \\ ___/ | | \ | |
\___ >|____/ \___ >|__|_| / \___ >|___| / |__|
\/ \/ \/ \/ \/
</pre>
<?= $temp; ?>
3)適当なビューにて呼び出してあげる
/application/views/welcome_message.php
<!-- 前略 -->
<?php $this->load->element('echo_test', ['temp' => 'echo test']); ?>
<!-- 後略 -->
※このページのアスキーアートは Text to ASCII Art Generator (TAAG) で生成しました。
※この記事の記述はCodeigniterのスタイルガイドに沿っていません。phpdocがないのもごめんなさい。。。
※原則としてビューをロードする制御はコントローラで行うべきです。
おわり!