Kohanaで入力→確認→完了までを作ってみた

ユーザーの登録~完了まで。
入力項目は名前とmailアドレス。
guesswork利用した時と似た感じになった。
自分がやりやすいからだと思うのだけど、これ正しいやり方?
CodeIgniter利用しても似た感じになるのかなー。
テンプレートエンジンにPHPTAL使ったのでview系のヘルパーは一切利用してません。
■コントローラ
・/application/controllers/reg.php

<?php defined(’SYSPATH’) or die(’No direct script access.’);

class Reg_Controller extends Controller {

function __construct()
{
parent::__construct();

$this->validation->error_format(’{message}’);
}

function index($status=’init’)
{
$fields = array(’username’, ‘mail’, ‘mail_confirm’);

$methodName = sprintf(’index_%s’, $status);
if (!method_exists($this, $methodName)) {
[…]

KohanaフレームワークでPHPTALを利用してみた2

前回の記事ではとりあえずKohanaフレームワークからPHPTALを呼び出すところまで試してみた。
なんとなく繋がったので今度はより実践向きに共通ヘッダーやフッターを利用できるバージョンにしてみる。
共通のヘッダーやフッターを表示させるには主に2パターン
・コンテンツのテンプレートを書いてそこからヘッダーとフッターを呼ぶ
・共通のレイアウトから内部だけくり抜いてコンテンツを当て込む
なんとなくCakePHP使ったときにやりやすかった共通のレイアウトの中身くり抜いて内部のコンテンツを当て込む方法を採用。
PHPTALを調べていたらちょうど良さそうなのを発見!
METAL(Macro Extension for TAL)、コンテンツの中身を書き換えてくれるらしいのでこれを使って作ってみる。
悩ましいのが2パターンどちらの方法を使ってもhtmlソースがちぎられた状態で存在してしまうこと。
テンプレートファイルがいきなりdivから始まってたりするとデザーナーさんでも読みやすいPHPTALのテンプレート特性を生かせない。
とりあえずはコンテンツ用のテンプレートにはダミーのヘッダー、フッターを書いてもらうことにする。
これで極端なテンプレートにはならないと思うけど、いまいちかな?
■設定ファイルとライブラリ
/system/application/config/ptal.php

<?php defined(’SYSPATH’) or die(’No direct access allowed.’);
/*
* File: Ptal
*
* Options:
* dir -
* suffix -
* layout -
* title-default -
* title-format -
*/
$config = array
(
‘dir’ => APPPATH.’views/’,
[…]

KohanaフレームワークでPHPTALを利用してみた

新しくアプリを作ることになったのでKohanaフレームワークを試用中。
以前CakePHPを利用したときにDBと密過ぎて違和感を感じたのでもっと手軽感のあるフレームワークを探したらいきつたい。
最初はCodeIgniter(以降CI)をちょっと試してみて良さそうだったのだけどこちらの記事を見て止めた。
セッションデータをクッキーに入れるのはなんか嫌だ。
で、CIを調べていたときにKohanaフレームワークがある事を知っていたので調査してみる。
CIから派生しただけあってデフォルトではクッキーに保存するのだけれど
configの設定でdriverを’native’にすると通常のセッションが利用できそうだったのでKohanaに決めた。
Kohanaにチャレンジして早速問題が。テンプレートエンジンが無い!
CIも同じなんだけどKohanaもテンプレートにPHPタグ(<?php ~ ?>)を書いて変数にアクセスする。
速度面で有利かも知れないけどやっぱりテンプレートエンジンは利用したい。
Smarty利用しようかとも思ったのだけれどそろそろ飽きたし調査ついでに新しいものに手をだすことにした。
それでPHPTAL
KohanaとPHPTALを連携するライブラリを書いたので晒します。
前提
・Kohanaがセットアップされている
・PHPTALがセットアップされている
■設定ファイルとライブラリ
/system/application/config/ptal.php

<?php defined(’SYSPATH’) or die(’No direct access allowed.’);
/*
* File: Ptal
*
* Options:
* path -
* suffix -
*/
$config = array
(
    ’dir’ => APPPATH.’views/’,
    ’suffix’ => ‘.html’
);

/system/libraries/Ptal.php(とりあえずレベルって事で^^;)

<?php if (!defined(’SYSPATH’)) exit(’No direct script access.’);
/*
* Class: Ptal
*
* author - t@setunai.net
* […]