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/
広告
関連記事
-
とりあえず動作させてみよう「PHP+OAuthでTwitterに投稿」(追記あり)
で自動でTwitterに投稿したいと思ったのでTwitter周りについて調べてみた。 *
-
PhoneGapを触ってみた(2) -実機でテスト編-
* 今までの流れ - * 自分の端末で動かしてみよう 今回は、PhoneGapで作成したアプリを実
-
Facebookで名刺を作ってみた -Mooの名刺作成サービス-
1ヶ月~半月くらい前に話題になっていたMooの名刺作成サービス。 話題になっていた時期に注文した名
-
Selenium2.0でUIテスト(2) -Rubyでやってみよう-
前回は、Selenium + PHPを試しました。 今後はRubyでやってみようということでSele
-
iPhoneアプリにGoogle Analyticsを入れてみる -Google Analytics SDK for iOS導入-
* 導入経緯 iPhoneアプリをリリースして、を使って「ランキング」や「ダウンロード数」は適宜チ
-
CakePHP2系にTwigを導入
CakePHP2系でも慣れているSmartyを使おうと思ったものの、良いプラグインが見つからず断念。
-
ソーシャルボタン(Twitterのフォローボタン、Facebookのオススメボタン)を設置する
サイトにソーシャルボタンを設置しようと思いちょこっと調べてみました。 * 設置するボタン
-
アプリのためにFacebookページ作成 -会社のメールアドレスで管理する方法-
アプリを作ると、色々と宣伝をしたくなります。 宣伝の方法は色々ありますが、今回はFacebookペ
-
Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-
以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ
-
Selenium2.0でUIテスト(1) -まずはPHPでやってみる-
久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々
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(…)の()内の書き方に問題があるのかもしれません。