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アプリ開発 芳名帳アプリ作成(3) -名前を書けるようにする-

* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=

記事を読む

iPhoneアプリ開発 芳名帳アプリ作成(2) -記帳画面作成-

* 今までの流れ - * 画面構成 今回の芳名帳アプリは以下の画面で構成しています。 -

記事を読む

iPhoneアプリにGoogle Analyticsを入れてみる -Google Analytics SDK for iOS導入-

* 導入経緯 iPhoneアプリをリリースして、を使って「ランキング」や「ダウンロード数」は適宜チ

記事を読む

input

CakePHP2系でTwigを利用 -書き方のメモ-

CakePHP2系でTwigをどのように記述するかのメモ。 数パターンしか載せてないですが、だいた

記事を読む

no image

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

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

記事を読む

no image

order byでハマったこと -order by、group byの処理順序-

CakePHPでorder byとgroup byを使っていてはまったことについてのメモ。 * 

記事を読む

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

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て100万DL超えしました!))し

記事を読む

no image

jQueryMobileでタッチ(スワイプ)してページ遷移 -Paginationプラグインの利用-

スマートフォン対応をしていてタッチしてページ遷移させたいケースがあるかと思います。 そんな時に便利

記事を読む

no image

リンク文字をタッチしても色が変わらない --webkit-tap-highlight-colorのメモ-

* 背景 jQuery Mobileを利用してスマートフォン対応をしたサイトにおいてリンク文字をタッ

記事を読む

no image

iPhoneアプリ開発 芳名帳アプリ作成(6) -写真に保存-

* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=

記事を読む

広告

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 ↑