CakePHP1.3にSmartyを導入

公開日: : 最終更新日:2014/04/20 CakePHP, IT, Smarty


いい加減、CakePHP(1.3)にもSmartyを導入することにしました。

 ダウンロード

今回、利用したのはbasukeさんのCakeSmarty

※他のも色々あったのですが、CakePHP1.3で動くのが特に見当たりませんでした。

まず、ソースをダウンロード

ダウンロードしたら以下のようにplugins配下に設置します。

  • app/plugins/

    • smarty/

      • verndors/(この配下にはSmarty-0.37あり)
      • views/

 初期設定とサンプル作成

 コントローラー

利用するコントローラーに以下を記述します。

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/

広告

関連記事

Selenium2.0でUIテスト(1) -まずはPHPでやってみる-

久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々

記事を読む

no image

Selenium2.0でUIテスト(2) -Rubyでやってみよう-

前回は、Selenium + PHPを試しました。 今後はRubyでやってみようということでSele

記事を読む

Jenkins + スマホアプリ(1) -スマホアプリ用CI環境を作ってみよう-

前回までは、iPhoneアプリでのCI環境でした。 TestFlightがAndroidアプリにも

記事を読む

no image

PhoneGapを触ってみた(2) -実機でテスト編-

* 今までの流れ - * 自分の端末で動かしてみよう 今回は、PhoneGapで作成したアプリを実

記事を読む

no image

PhoneGapを触ってみた ―導入編―

スマートフォン対応をjQuery Mobileを使ってやったので、その資産をいかせないかということで

記事を読む

MacでRuby on Railsの開発環境構築 -Apacheで動かす-

* 環境 -MacBook Air MD231J/A -Mac OS X バージョン10.8.2

記事を読む

no image

iPhoneアプリ開発 −複数前の画面に戻る−

* やりたいこと ある画面から別の画面に遷移したい。 -1つ前の画面に戻りたい。 -2つ前の画面に戻

記事を読む

Jenkins + DeployGate(1) -DeployGateでAndroidアプリ開発-

TestFlight for Androidが発表されて1ヶ月ぐらいたちますが、音沙汰がありません。

記事を読む

no image

jQuery Mobileの初期設定 -jQuery Mobieを利用時にページ内リンクさせたい-

* 前提 jQuery Mobileを利用していて、以下のタグを使ってページ内遷移したいことがありま

記事を読む

WordPressプラグイン「WP Hatena Notation」にPullRequestを投げた話

WordPressではてな記法が利用できる「WP Hatena Notation」を重宝しています。

記事を読む

広告

Comment

  1. Yuichi より:

    はじめまして、

    こちらで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}などのようにする必要があります。

  2. タケパン より:

    こんばんは、はじめまして。

    私はサニタイズの処理を入れようとしてコントローラーに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.

  3. タケパン より:

    度々、申し訳ございません。
    上記の書き込みは自己解決しました。
    プラグインの問題ではなくてCakePHPの使いかたでしたね・・。

    Sanitize::stripAll(テキスト) :
    、、、空白文字(改行・タブなど)を除去

    という意味を理解してませんでした。ただ、スクリプトタグのみ消えるのかどうか・・・という
    ところはすべて表示しないようになっているので腑に落ちないですが、Sanitize::htmlで
    問題なく動作したので良いとします。

    以前、研修で同じバージョンのCakePHPではちゃんと動作したような覚えがあったので
    うる覚えかもしれませんが勘違いしてました。

    大変、ご迷惑おかけしました。

  4. とし より:

    解決したようで何よりです。

    ちなみに、上記の$data = “alert(‘hogehoge’);”;だとサニタイズで除去するのは特にないですね。
    $data = “alert(‘hogehoge’);”;とかですかね。

  5. ガラ より:

    はじめまして、
    このプラグインを使っているのですが、別のプラグインを導入した時にコンパイルエラーが出ます
    そちらでは、如何でしょうか。
    実際には、upload_packを導入したのですが、{$upload->image(…)}するとエラーが出ます。{$this->upload->image(…)}でもダメでした。いろいろ試行錯誤したのですがダメでした。何か解決策があればご教授願えませんでしょうか。
    エラー表示
    Fatal error: Uncaught exception ‘SmartyCompilerException’ with message ‘Syntax Error in template…..
    本家の方にも同じ内容で投稿させていただいています。

    • とし より:

      upload_packは実際に使ってないので、正確なことはいえませんが。
      文法エラーのようですから、$upload->image(…)の()内の書き方に問題があるのかもしれません。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

広告

no image
[感想] Effective Objective-C 2.0 ☆☆☆☆★(4.5)

* 構成 - 第1章 Objective-Cに慣れる -

no image
[感想] iOSアプリテスト自動化入門 ☆☆☆(3.0)

* 構成 - Chapter 1 テスト自動化への取り組み

DeployGateを試してみた(iOS編) -DeployGateがiOSに対応-

今までのDeployGate - -[http://pplace.

iPhone/iPadアプリを開発するためにやったこと

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て1

no image
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今の

→もっと見る

PAGE TOP ↑