ビューセル¶
ビューセルはコントローラの外側で生成した HTML を挿入することができます。It simply calls the specified class and method, which must return a string of valid HTML. This method could be in any callable method, found in any class that the autoloader can locate. 唯一の制約は、クラスのコンストラクタ引数を渡せません。 これはビューの中で使われることを意図しており、コードをモジュール化するのに大いに役立つでしょう。
<?= view_cell('\App\Libraries\Blog::recentPosts') ?>
In this example, the class App\Libraries\Blog
is loaded, and the method recentPosts()
is run. The method
must return the generated HTML as a string. The method can be either a static method or not. それぞれ動作します。
セルの引数¶
You can further refine the call by passing a list of parameters in the second parameter to the method. The values passed can be an array of key/value pairs, or a comma-separated string of key/value pairs:
// パラメータ配列を渡す
<?= view_cell('\App\Libraries\Blog::recentPosts', ['category' => 'codeigniter', 'limit' => 5]) ?>
// パラメータ文字列を渡す
<?= view_cell('\App\Libraries\Blog::recentPosts', 'category=codeigniter, limit=5') ?>
public function recentPosts(array $params=[])
{
$posts = $this->blogModel->where('category', $params['category'])
->orderBy('published_on', 'desc')
->limit($params['limit'])
->get();
return view('recentPosts', ['posts' => $posts]);
}
加えて、パラメータ名をメソッドの引数に一致させると、読みやすくなります。 この方法を使う場合、ビューセルを呼び出す際に常にすべてのパラメータを指定しなければなりません:
<?= view_cell('\App\Libraries\Blog::recentPosts', 'category=codeigniter, limit=5') ?>
public function recentPosts(int $limit, string $category)
{
$posts = $this->blogModel->where('category', $category)
->orderBy('published_on', 'desc')
->limit($limit)
->get();
return view('recentPosts', ['posts' => $posts]);
}
セルのキャッシュ¶
ビューセルの結果はキャッシュできます。第3引数に秒数を指定します。これはキャッシュエンジンのその時点の設定を使用します。
// ビューを5分キャッシュします
<?= view_cell('\App\Libraries\Blog::recentPosts', 'limit=5', 300) ?>
自動生成するキャッシュ名の代わりに独自の名前を指定できます。第4引数に渡します:
// ビューを5分キャッシュします
<?= view_cell('\App\Libraries\Blog::recentPosts', 'limit=5', 300, 'newcacheid') ?>