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();

これだけです。