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/

広告

関連記事

no image

iPhoneアプリ開発 -iOS6から変わったこと-

Deployment Targetを5.1にしていた時には気がつかなかったのですが、iOS6になって

記事を読む

no image

ソーシャルボタン(Twitterのフォローボタン、Facebookのオススメボタン)を設置する

サイトにソーシャルボタンを設置しようと思いちょこっと調べてみました。 * 設置するボタン

記事を読む

no image

PhoneGapを触ってみた(3) -画像を扱う(Camera APIを使ってみる)-

今回は、PhoneGapのCamera APIを使って携帯のアルバムにある画像を扱ってみます。

記事を読む

no image

iPhoneアプリをヒットさせるために大事な5つのこと

巷にはたくさんのiPhoneアプリがたくさんあります。 そして、毎日新しいアプリがリリースされていま

記事を読む

Jenkins + iPhoneアプリ(2) -ローカルリポジトリにあるデータからipaファイル生成-

* これまで - * 最終目標 -(開発者)git(リモートリポジトリ)にソースをコミット

記事を読む

no image

TwitterAPI 1.1対応で困ったこと −フォロー・フォロワー一覧取得−

  TwitterのAPI1.1に2013年の3月15日までには対応しないといけません。

記事を読む

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

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

記事を読む

no image

Capistranoで簡単デプロイ -開発用サーバー編-

cakePHPを使って開発しているサービス()で、リリース周りを楽にしたいなと思いCapistran

記事を読む

スクリーンショット 2013-04-27 11.46.12

githubを使っての開発(2) -masterブランチにマージ-

前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し

記事を読む

no image

Jenkins+Capistranoを設定した時にしたこと -「ポート変更」「公開鍵認証」対応-

* 前段階 上記にあるように、Jenkins+Capistranoの設定をしています。 ただし、設

記事を読む

広告

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(…)の()内の書き方に問題があるのかもしれません。

タケパン にコメントする コメントをキャンセル

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

次の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 ↑