takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

CakePHP 2.4 で Smarty 3.1 を使う

Smarty のインストール

今回は Composer でインストールしました。
以下のように composer.jsonSmarty の設定を追加して composer update を実行します。

{
    "require": {
        "pear-cakephp/cakephp": "2.4.*",
                "cakephp/debug_kit": "~2.2",
                "FriendsOfCake/crud": "3.*",
                "cakedc/search": "2.*",
                "smarty/smarty": "3.1.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    },
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ]
}

SmartyView.php のインストール

こちらのサイトで公開されている SmartyView.php を View ディレクトリにコピーします。
Cakephp2系にsmarty3をいれるはなし - mosowave

SmartyView.php を自分の環境に合わせて修正

Composer で Smarty をインストールしたため、参考サイトとはパス構成が異なっています。
そのため SmartyView.phpSmarty.class.php を指定しているパスを変更します。

// View/SmartyView.php 13行目

// 修正前
if(!App::import('Vendor', 'Smarty', array('file' => 'smarty'.DS.'Smarty.class.php')))

// 修正後
if(!App::import('Vendor', 'Smarty', array('file' => 'smarty'.DS.'smarty'.DS.'distribution'.DS.'libs'.DS.'Smarty.class.php')))

ちなみに Smartyデバッグコンソールを OFF にしたい場合は次のように変更します。

// View/SmartyView.php 24行目

$this->Smarty->debugging = false;

AppController.php の変更

Controller/AppController.php で SmartyView を使用するように変更します。

class AppController extends Controller {
	public $viewClass = 'Smarty';
}