SPACEKEY

Technical Memorandum

Slim Framework + Smarty

May 29, 2014

Slim FrameworkでテンプレートエンジンのSmartyを使えるようにしてみます。

セットアップ

composer.jsonはこんな感じです。

{
    "require": {
        "slim/slim": "2.*",
        "slim/views": "0.1.*",
        "smarty/smarty": "3.*"
    }
}

smartyとともに、Slim-Viewsと言うものを入れる必要があります。 環境の準備はこれだけです。 Slim-Viewsの説明を見ながらやってみます。

構成

ディレクトリとファイルの構成は下記のようになります。

project/
    cache/
    templates/
        index.tpl
    compiled/
    vendor/
    index.php
    composer.json
    .htaccess

cacheディレクトリと、compiledディレクトリは、smartyが使うものです。 cacheはなにかキャッシュするんでしょうけど、まだ何かわかりません。 compiledディレクトリは書き込み可能にしておかないとエラーが出ます。

index.tpl

ページのテンプレートを作成します。

<!DOCTYPE html>
<html>
    <head>
        <title>Smarty</title>
        <meta charset="UTF-8">
    </head>
<body>
<h1>Smarty</h1>
{$name}
</body>
</html>

超簡単に、$nameをもらって出力するだけです。

index.php

smartyを使うための設定があれこれ入ってきます。

<?php
require_once 'vendor/autoload.php';

$app = new Slim\Slim(array(
    'debug' => true,
    'templates.path' => 'templates',
    'view' => new \Slim\Views\Smarty(),
));

$view = $app->view();
$view->parserDirectory = dirname(__FILE__) . 'smarty';
$view->parserCompileDirectory = dirname(__FILE__) . '/compiled';
$view->parserCacheDirectory = dirname(__FILE__) . '/cache';

$app->get('/', function () use($app){
    $app->render('index.tpl', array('name' => "spacekey"));
});

$app->run();

これだけです。