前回、fuelphpでpjaxを扱うである画面だけ、pjaxのjsライブラリが必要だった。
テンプレートのベースである、templateファイルにpjaxのライブラリのパスを
書いてしまうと、使ってない画面までこのライブラリが呼ばれて無駄。
かと言って、個別テンプレートでそのライブラリを呼ぶのもいけてない。
assetsを利用してこの問題が解決できる。
■コントローラー
class Controller_Welcome extends Controller_Template
{
public function action_index()
{
Asset::css(array('bootstrap.min.css', 'bootstrap-responsive.min.css','bootswatch.css'), array(), 'add_css', false);
$this->template->content = View::forge('welcome/index');
}
※ここで、'add_css'っていうグループを登録しておく
■テンプレート
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<?php echo Asset::css('全てのテンプレートで呼ぶ.css'); ?>
<?php echo Asset::js('全てのテンプレートで呼ぶ.js'); ?>
<!-- 画面固有のCSS -->
<?php echo Asset::render('add_css');?>
これで、コントローラー側で、add_cssグループに、CSSファイルがアサイン
されているときだけ、画面固有のCSSが表示されるようになる。
ちなみに、
<?php echo Asset::render('add_css',true);?>
ってやると、外部ファイルを呼ぶのではなくて、外部ファイルがここに
展開される
なるほどね
テンプレートのベースである、templateファイルにpjaxのライブラリのパスを
書いてしまうと、使ってない画面までこのライブラリが呼ばれて無駄。
かと言って、個別テンプレートでそのライブラリを呼ぶのもいけてない。
assetsを利用してこの問題が解決できる。
■コントローラー
class Controller_Welcome extends Controller_Template
{
public function action_index()
{
Asset::css(array('bootstrap.min.css', 'bootstrap-responsive.min.css','bootswatch.css'), array(), 'add_css', false);
$this->template->content = View::forge('welcome/index');
}
※ここで、'add_css'っていうグループを登録しておく
■テンプレート
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<?php echo Asset::css('全てのテンプレートで呼ぶ.css'); ?>
<?php echo Asset::js('全てのテンプレートで呼ぶ.js'); ?>
<!-- 画面固有のCSS -->
<?php echo Asset::render('add_css');?>
これで、コントローラー側で、add_cssグループに、CSSファイルがアサイン
されているときだけ、画面固有のCSSが表示されるようになる。
ちなみに、
<?php echo Asset::render('add_css',true);?>
ってやると、外部ファイルを呼ぶのではなくて、外部ファイルがここに
展開される
なるほどね
※コメント投稿者のブログIDはブログ作成者のみに通知されます