May 8
逆引きrhaco27: かっこいいURL(?)を使う(その1:テンプレートでそのまま表示)
rhacoで
/index.php/path/to/action
みたいなURLを使用する方法です。
mod_rewriteを使うとindex.phpも要らなくなりますが、それはrhacoとは関係無いので省略。rhacoのアプリ「blogkit」に簡単な例を書いてあるので見たら良いと思います。
注意:
1.phpがcgiモードだと動かなかったと思います。
2.rhacoはsvnのtrunkを使用して下さい(リリース版はこの書き方では動きません)
上のパスを
1.テンプレートでそのまま表示
2.generic.ViewsMapperを使って表示
3.index.php内に関数を作り、それを使って表示
4.library下にクラスを作り、それを使って表示
に当てはめることが出来ます。
今回はテンプレートでそのまま表示してみます。
index.php
<?php
require_once("./__init__.php");
Rhaco::import("generic.Urls");
$pattern = array("^path\/to\/action\/?$"=>array("template"=>F::path(Rhaco::constant("TEMPLATE_PATH"),"path_to_action.html")));
$parser = Urls::parser($pattern);
$parser->write();
?>
resources/templates/path_to_action.html
<html> <head> <title>テストテンプレート</title> </head> <body> テスト </body> </html>
テンプレートに値を入れたい場合は
index.php
<?php
require_once("./__init__.php");
Rhaco::import("generic.Urls");
$pattern = array("^path\/to\/action\/?$"=>array("template"=>F::path(Rhaco::constant("TEMPLATE_PATH"),"path_to_action.html"),"var"=>array("content"=>"てすと")));
$parser = Urls::parser($pattern);
$parser->write();
?>
または
<?php
require_once("./__init__.php");
Rhaco::import("generic.Urls");
$pattern = array("^path\/to\/action\/?$"=>array("template"=>F::path(Rhaco::constant("TEMPLATE_PATH"),"path_to_action.html")));
$parser = Urls::parser($pattern);
$parser->setVariable("content","てすと");
$parser->write();
?>
resources/templates/path_to_action.html
<html>
<head>
<title>テストテンプレート</title>
</head>
<body>
{$content}
</body>
</html>
とすればテンプレートに値を入れて表示してくれます。
Urlsの引数は
array(
"パスの正規表現"=>
array("マッチした場合に呼び出す条件"),
"パスの正規表現"=>
array("マッチした場合に呼び出す条件"),
...
)
で表現します。今回は"マッチした場合に呼び出す条件"として「テンプレート」と「テンプレートにセットする値」を指定しました。次回はgeneric.ViewsMapperを使います。
このエントリーのはてなブックマーク (