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/iPadアプリを開発するためにやったこと
今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て100万DL超えしました!))し
-
はてなスターのアイコンを日本酒アイコンにしてみた
日本酒大好きです。 というわけで、はてなスターを日本酒アイコンにしてみました。 その流れ
-
iPhoneアプリにGoogle Analyticsを入れてみる -Google Analytics SDK for iOS導入-
* 導入経緯 iPhoneアプリをリリースして、を使って「ランキング」や「ダウンロード数」は適宜チ
-
jQuery Mobileでミスしたこと -JSだけ最新にしてしまってレイアウト崩れたの巻-
* 前提(CDN先) jQuery Mobileを使う場合、cssを自前のサーバにおいて、jsはC
-
iPhoneアプリ開発 芳名帳アプリ作成(5) -ペンサイズと入力エリア数の設定-
* 今までの流れ - -[http://pplace.jp/2013/06/1531/:titl
-
iPhoneアプリ開発 −iOS6からの「写真」へのアクセス問題−
写真を扱うアプリを開発している際に問題になったこと。 ※結構前の話を今更まとめてみる。 * 写真へ
-
CakePHP1.3でスマートフォン対応
CakePHP1.3でスマートフォン対応のためにやったことをメモしておきます。 * 環境 -
-
iPhoneアプリ開発 −タッチで線を描く(1)−
* やりたいこと 今回やりたいことは以下の2点。 -(1) 画面をタッチして、指を動かして線を描きた
-
CAPTCHAの導入方法 -KCAPTCHAの導入-
CakePHP(1.2、1.3)にKCAPTCHAを導入してみたのでメモ。 * CAPTCHA
-
Twitterでサービスにログイン -ソーシャルログイン-
* やりたいこと -自身のWebサービスにTwitterIDでログイン(ソーシャルログイン)したい。
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(…)の()内の書き方に問題があるのかもしれません。