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

ViewController単位で画面の向きを変えてみる

ViewController毎に画面の向きを変えたい!ということがあったのでやってみました。 *

記事を読む

setup

Google Appsで独自ドメインメールの利用

独自ドメインでメアドを持ちたかったのでGoogle Appsを利用してみました。 その各種設定の覚

記事を読む

no image

Facebookがちょっとコワイ vol.2 -本当にあなたはあなたなの?-

以下のブログを読んで、さらにコワイと思ったFacebook。 あなたが登録している「友

記事を読む

no image

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

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

記事を読む

iPhoneアプリ開発 芳名帳アプリ作成(5) -ペンサイズと入力エリア数の設定-

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

記事を読む

no image

iPhoneアプリ開発 −2本指で画像を移動させる−

* やりたいこと 表示させている画像(UIImageView)を2本指で移動させたい。 ※1本指は別

記事を読む

no image

iPhoneアプリ開発 -UIScrollViewで画像を拡大・縮小-

* やりたいこと UIScrollViewでピンチアウト・インして上に乗っている画像を拡大・縮小した

記事を読む

no image

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

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

記事を読む

no image

str_padとsprintfの速度

PHPで同じことが出来る「str_pad」と「sprintf」。 今まではsprintfを使う機会

記事を読む

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

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

記事を読む

広告

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 ↑