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/
広告
関連記事
-
iPhoneアプリ開発 -iOS6から変わったこと-
Deployment Targetを5.1にしていた時には気がつかなかったのですが、iOS6になって
-
ソーシャルボタン(Twitterのフォローボタン、Facebookのオススメボタン)を設置する
サイトにソーシャルボタンを設置しようと思いちょこっと調べてみました。 * 設置するボタン
-
PhoneGapを触ってみた(3) -画像を扱う(Camera APIを使ってみる)-
今回は、PhoneGapのCamera APIを使って携帯のアルバムにある画像を扱ってみます。
-
iPhoneアプリをヒットさせるために大事な5つのこと
巷にはたくさんのiPhoneアプリがたくさんあります。 そして、毎日新しいアプリがリリースされていま
-
Jenkins + iPhoneアプリ(2) -ローカルリポジトリにあるデータからipaファイル生成-
* これまで - * 最終目標 -(開発者)git(リモートリポジトリ)にソースをコミット
-
TwitterAPI 1.1対応で困ったこと −フォロー・フォロワー一覧取得−
TwitterのAPI1.1に2013年の3月15日までには対応しないといけません。
-
WordPressプラグイン「WP Hatena Notation」にPullRequestを投げた話
WordPressではてな記法が利用できる「WP Hatena Notation」を重宝しています。
-
Capistranoで簡単デプロイ -開発用サーバー編-
cakePHPを使って開発しているサービス()で、リリース周りを楽にしたいなと思いCapistran
-
githubを使っての開発(2) -masterブランチにマージ-
前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し
-
Jenkins+Capistranoを設定した時にしたこと -「ポート変更」「公開鍵認証」対応-
* 前段階 上記にあるように、Jenkins+Capistranoの設定をしています。 ただし、設
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(…)の()内の書き方に問題があるのかもしれません。