おぼえがき

おぼえがき

fuelphpでAssetsを利用して画面特有のcss,jsなどを呼び込む

2013-03-17 | php
前回、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);?>
ってやると、外部ファイルを呼ぶのではなくて、外部ファイルがここに
展開される

なるほどね

fuelphpでpjaxを扱う

2013-03-17 | php
fuelphpでpjaxを扱う

前回、fuelphpでログ出力を調べたのもこの開発を
している際にテストが面倒くさかったため。


ブラウザ対応の問題とかもあるが、pjaxを使うと読込速度や
SEO等々も考えると、なかなかいいと思う。

実装する動きは、画面Aから画面Bに遷移。
メインのコンテンツのみを入れ替えることをやる。
画面の遷移は、github見たいな動きを出きるような感じに
アニメーションも入れてみた。

テンプレートのファイル構成
view/template.php
view/welcome/画面A.php
view/welcome/画面B.php

controllerは、controller_templateを利用しているので、
側は、template.phpがやってくれて、
中身を画面A.phpと画面B.phpがやる。



でコントローラーはこんな感じ

controller




これで、いけるはず。