CakePHP1.3にSmartyを導入
ダウンロード
今回、利用したのはbasukeさんのCakeSmarty
※他のも色々あったのですが、CakePHP1.3で動くのが特に見当たりませんでした。
まず、ソースをダウンロード
ダウンロードしたら以下のようにplugins配下に設置します。
- app/plugins/
- smarty/
- verndors/(この配下にはSmarty-0.37あり)
- views/
- smarty/
初期設定とサンプル作成
コントローラー
利用するコントローラーに以下を記述します。
public $view = 'Smarty.Smarty';
※全体で反映させるならば、AppControllerに記述するだけでOKです。
ビュー
htmlファイルを用意して記述すればOKです。
このCakeSmartyが素晴らしい点は、ctpファイルがあればそれが優先して読み込まれる点でしょう。
さて、Smartyの導入でどれぐらいシンプルになったか。
今まで。
<?php if(!empty($data['book']['img'])) { echo "<img src={$data['book']['img']}>"; } ?>
Smarty導入後。
{if $data['book']['img']} {image src=$data['book']['img']} {/if}
分かっていたこととはいえ、今までなんで導入しなかったのか。
コマンド周り
上記にあるimage以外の他のコマンド周りについて詳しく知りたければ、以下の場所にあるphpファイルを見れば分かります。
- app/plugins/
- smarty/
- views/
- smarty/
広告
関連記事
-
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –
* やりたいこと macのターミナルでgitをいじっていると -今のブランチってなんだっけ? -g
-
jQueryMobileでカレンダー表示 -DateBoxプラグインの利用-
スマートフォン対応をしているとカレンダーの表示の仕方をスマートフォンらしくしたいことがあると思います
-
iPhoneアプリ開発 - touchesBeganとUITapGestureRecognizerの差(タッチとタップ) –
「画面にある画像を移動させたい」とか、「画面に線を書きたい」ということがあるかと思います。 ぐぐると
-
jQuery Mobile1.2のCollapsible Listsを試してみた -画像のカスタマイズについて-
8月1日にjQuery Mobile1.2 Alphaが出ました。 まだAlphaなので自
-
WordPressプラグイン「WP Hatena Notation」にPullRequestを投げた話
WordPressではてな記法が利用できる「WP Hatena Notation」を重宝しています。
-
Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法
* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス
-
jQuery Mobileの初期設定 -jQuery Mobieを利用時にページ内リンクさせたい-
* 前提 jQuery Mobileを利用していて、以下のタグを使ってページ内遷移したいことがありま
-
Jenkins + iPhoneアプリ(2) -ローカルリポジトリにあるデータからipaファイル生成-
* これまで - * 最終目標 -(開発者)git(リモートリポジトリ)にソースをコミット
-
Twitterでサービスにログイン -ソーシャルログイン-
* やりたいこと -自身のWebサービスにTwitterIDでログイン(ソーシャルログイン)したい。
-
PhoneGapを触ってみた(3) -画像を扱う(Camera APIを使ってみる)-
今回は、PhoneGapのCamera APIを使って携帯のアルバムにある画像を扱ってみます。
Comment
はじめまして、
こちらでcakephp 1.3.12にSmarty 3.1.3を利用しようとしてるのですが、書いてある通りにやりましたら、このテキストしかひょうじされません。
Html->charset(); ?> Html->meta(‘icon’); echo $this->Html->css(‘cake.generic’); echo $scripts_for_layout; ?>
Html->link(__(‘CakePHP: the rapid development php framework’, true), ‘http://cakephp.org’); ?>
Session->flash(); ?>
Html->link( $this->Html->image(‘cake.power.gif’, array(‘alt’=> __(‘CakePHP: the rapid development php framework’, true), ‘border’ => ‘0’)), ‘http://www.cakephp.org/’, array(‘target’ => ‘_blank’, ‘escape’ => false) ); ?>
element(‘sql_dump’); ?>
そちらのほうで、ちゃんと動きました?
よろしくお願いします。
smartyの表記にする必要があるので、上記のままでは表示されなくて書き換えが必要になってしまいますね。
例えば、element(‘sql_dump’)などのようにelementを使う場合は、{element name=”sql_dump”}などのようにする必要があります。
aタグであれば、{link href=””}サンプル{/link}などのようにする必要があります。
こんばんは、はじめまして。
私はサニタイズの処理を入れようとしてコントローラーにSanitizeをインポートして
下記のようにデータを吐き出したところ、何も表示されませんでした。
サニタイズを通さなければ文字列は表示?(これだとアラートが表示されてしまいます)
App::import(‘Sanitize’);
$data = “alert(‘hogehoge’);”;
$data = Sanitize::stripAll($data);
$this->set(“data”, $data);
テンプレートをindex.htmlを辞めてindex.ctpでやっても同じ動作でした。
何か対処方法があるのでしょうか。ご教示願います。
環境:
linux CentOS 6.0
CakePHP ver.1.3.14.
度々、申し訳ございません。
上記の書き込みは自己解決しました。
プラグインの問題ではなくてCakePHPの使いかたでしたね・・。
Sanitize::stripAll(テキスト) :
、空白文字(改行・タブなど)を除去
、、
という意味を理解してませんでした。ただ、スクリプトタグのみ消えるのかどうか・・・という
ところはすべて表示しないようになっているので腑に落ちないですが、Sanitize::htmlで
問題なく動作したので良いとします。
以前、研修で同じバージョンのCakePHPではちゃんと動作したような覚えがあったので
うる覚えかもしれませんが勘違いしてました。
大変、ご迷惑おかけしました。
解決したようで何よりです。
ちなみに、上記の$data = “alert(‘hogehoge’);”;だとサニタイズで除去するのは特にないですね。
$data = “alert(‘hogehoge’);”;とかですかね。
はじめまして、
このプラグインを使っているのですが、別のプラグインを導入した時にコンパイルエラーが出ます
そちらでは、如何でしょうか。
実際には、upload_packを導入したのですが、{$upload->image(…)}するとエラーが出ます。{$this->upload->image(…)}でもダメでした。いろいろ試行錯誤したのですがダメでした。何か解決策があればご教授願えませんでしょうか。
エラー表示
Fatal error: Uncaught exception ‘SmartyCompilerException’ with message ‘Syntax Error in template…..
本家の方にも同じ内容で投稿させていただいています。
upload_packは実際に使ってないので、正確なことはいえませんが。
文法エラーのようですから、$upload->image(…)の()内の書き方に問題があるのかもしれません。