CakePHP用のSmartyプラグイン
以前からいくつかあるのですが、バージョンが古かったりViewの全ての機能が使えなかったり、最新版から見ると機能として足りてない部分が見受けられたので、新たに用意してみました。GitHubにおいてあります。MITライセンスっす。
GitHub - kanshin/CakeSmarty: Smarty 3 plugin for CakePHP 1.3
ポイントは
1. ThemeViewに対応
2. デフォルトのctpと共存可能
3. Helperに対応したSmartyプラグインをバンドル
4. Smartyのconfigに対応
2番目、結構重要です。Scaffoldで作られたビューや、デフォルトのレイアウトはそのまま.ctpのままにしておいて、メインコンテンツのみSmartyで記述ということも簡単にできます。.ctpのエレメントも使えます。
3番目が一番大事なポイントだと思ってます。Smarty用のプラグインがないとヘルパーで提供される機能が使えなくなる、もしくはPHP生コードとほとんど変わらない形で記述しなければいけなくなってしまいます。つまり、なんでSmarty使っているんだか全くわからなくなってしまう。これはまずいだろうということで、最低限、FormHelper、PaginatorHelper、HtmlHelperの一部あたりは移植しました。全部が全部必要な訳ではないので、その辺ですませてます。
用意したコマンドは以下の通り。
HTML
- {link ...}...{/link}
- $this->Html->link(...)
フォーム
- {form}...{form}
- $this->Form->create(...) ... $this->Form->end()
- {input}
- $this->Form->input(...)
- {checkbox}
- $this->Form->checkbox(...)
- {radio}
- $this->Form->radio(...)
- {password}
- $this->Form->password(...)
- {text}
- $this->Form->text(...)
- {textarea}
- $this->Form->textarea(...)
- {select}
- $this->Form->select(...)
- {file}
- $this->Form->file(...)
- {image}
- $this->Form->image(...)
- {submit}
- $this->Form->submit(...)
…その他FormHelperからいろいろ
ルーター
- {url}
- Router::url(...)
- {querystring}
- Router::querystring(...)
パジネーター
- {paginator [model="xxx"]}…{/paginator}
- パジネーターを作るのに必要な変数の定義
- {numbers}
- $paginator->numbers(...)
その他
- {title}...{/title}
- ビューからtitleを設定
- {head}...{/head}
- $view->addScript()
- {element file="…"}
- エレメント呼び出し
修飾子
- |date
- 日付のフォーマット変換
インストールはGitHubからダウンロード、もしくは以下の通り追加してください。
$ git submodule add git://github.com/kanshin/CakeSmarty.git plugins/smarty
有効にするには、コントローラーに以下の記述を追加します。
<?php public $view = 'Smarty.Smarty';
Smartyビューが見つからなければctpが使われますので、AppControllerで記述してしまっても、ほぼ問題ないと思います。
実際にログイン画面をSmartyで記述してみると、こんな感じになります。
{title}ログイン{/title} <p>今日は{$today|date}です</p> {form model="User"} {input type="text" name="email" label="メールアドレス"} {input type="password" name="password" label="パスワード"} {submit value="ログイン"} {/form} {link action="register"}登録はこちら{/link}
フォームヘルパーあたりは、すごく見やすくなりますね。
しかし、なんかPHPの人はテンプレートエンジンがお嫌いな印象があるんですが、どうなんでしょうかね。PHPがテンプレートエンジンなんだから!っていう主張ありますが、それは無理があると思いますね。ショートオープンタグが常に有効で、もっと書きやすければ、ありかもですが、「」これでは……。「{$foo}」ぐらいだったらありなんですが。一貫性もあるし。どうでしょうかね。
僕はPHPでビューを実装しろって言われても三日と続けられませんよ。目がちらちらしてビューに集中できませんよ。オレの脳みそが雑音に弱いのかな。
Smarty入門?PHP+テンプレート・エンジンでつくるMVCアプリケーション?
- 作者: 山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2005/03/15
- メディア: 大型本
- 購入: 7人 クリック: 150回
- この商品を含むブログ (34件) を見る
速習Webテクニック Smarty動的Webサイト構築入門 (Quick Master of Web Technique)
- 作者: 原一浩,青木真,鵜飼孝陽,川野辺亮
- 出版社/メーカー: 技術評論社
- 発売日: 2008/09/20
- メディア: 大型本
- 購入: 3人 クリック: 61回
- この商品を含むブログ (6件) を見る