フレームワークPhalconのViewにVoltを使ってみる
前回の続きです。
チュートリアルのViewでは以下の通り、生のPHPで書かれています。
<?php echo "<h1>Hello!</h1>"; echo Phalcon\Tag::linkTo("signup", "Sign Up Here!");
出力されるHTMLは以下の通り。
<h1>Hello!</h1><a href="/public/signup">Sign Up Here!</a>
大方の人が期待した通りに出力されていると思います。
ではPhalconで使えるVoltテンプレートを使うように変更してみます。
/public/index.phpを修正します。
<?php //Setting up the view component $di->set('view', function(){ $view = new \Phalcon\Mvc\View(); $view->setViewsDir('../app/views/'); // .voltファイルをVoltエンジンでレンダリングするよう登録 $view->registerEngines(array( ".volt" => 'Phalcon\Mvc\View\Engine\Volt' )); return $view; });
次にView側です。
/app/views/index/index.voltを作成します。
<h1>Hello!</h1> {{ link_to('signup', 'Sign Up Here!') }}
ここで出てくるlink_to()はPhalcon\Tag::linkTo();と同義です。
他に使えるメソッドは公式ドキュメントにタグヘルパーとして記載されています。
また、Voltファイルには、通常のPHPを混在させる事もできるので、以下の様な書き方も可能です。
<h1>Hello!</h1> {{ link_to('signup', 'Sign Up Here!') }} <?php echo Phalcon\Tag::linkTo("signup", "Sign Up Here!"); ?>
Voltの書き方が分からなくても何とかなりますね。
この状態で一度ページにアクセスすると、同じ階層にindex.volt.phpというファイルができています。.voltファイルを.phpに変換したもののようで、以下のような内容になっています。
<h1>Hello!</h1> <?php echo Phalcon\Tag::linkTo(array('signup', 'Sign Up Here!')); ?> <?php echo Phalcon\Tag::linkTo("signup", "Sign Up Here!"); ?>
ついでですが、Vimでの.voltファイルのシンタックスハイライトはhtmldjangoが近そうです。
:set filetype=htmldjango
とするか、.vimrcで
au! BufNewFile,BufRead *.volt set filetype=htmldjango
としておけば良さそうです。