rhaco

rhaco関連のアプリ・ドキュメント類の置き場です。

テンプレート構文メモ

tag/TemplateParserの構文に関してのメモ
参考:rhacoアプリ開発日誌 - 逆引きrhaco53: rhacoのテンプレートで使用するタグまとめ
※整形中orz
ループ
	構文
		<rt:loop>
		~
		</rt:loop>
	パラメータ
		param	ループ対象の変数を指定、{$hoge}、hoge、など、省略値はparam
		var		ループ内で要素を割り当てる変数名を指定、fuga、など、省略値はvar
		counter	ループ内で要素のキーを割り当てる変数名を指定、key、など、省略値はcounter
		first	ループの先頭要素かの判断に使用する変数名を指定、is_first、など、省略値はfirst
		last	ループの末尾要素かの判断に使用する変数名を指定、is_last、など、省略値はlast
		offset	ループの開始オフセットの指定、省略値は1
		limit	ループ回数の指定、省略値は0(無制限)
	サンプル
		ソース
			※ $parser->setVariable('hoge',array("a","b","c"));
			<rt:loop param="{$hoge}" var="fuga" counter="key">
			hoge[{$key}] = '{$fuga}'<br>
			</rt:loop>
		実行結果
			hoge[0] = 'a'<br>
			hoge[1] = 'b'<br>
			hoge[2] = 'c'<br>
	説明

ループ
	構文
		<rt:for>
		~
		</rt:for>
	パラメータ
		counter	ループ内で現在のカウンタ値を割り当てる変数名を指定、i、など、省略値はcounter
		start	ループの初期値を指定、省略値は0
		end		ループの終了値を指定、省略値は10
		step	ループ増分を指定、省略値は1
	サンプル
		ソース
			<rt:for counter="i" start="0" end="5" step="2">
			i = {$i}<br>
			</rt:for>
		実行結果
			i = 0<br>
			i = 2<br>
			i = 4<br>
	説明

条件分岐
	構文
		<rt:if>
		~
		<rt:else />
		~
		</rt:if>
	パラメータ
		param	条件の判断に使用する変数を指定、{$hoge}、など、省略値はfalse
		value	条件の判断に使用する値を指定、5、など
	サンプル
		ソース
			※ $parser->setVariable('hoge',"a"));
			<rt:if param="{$hoge}" value="a">
			hoge is 'a'<br>
			</rt:else />
			hoge is not 'a'<br>
			</rt:if>
		実行結果
			hoge is 'a'<br>
	説明
		<rt:ifnot>の反対の動作、条件がtrueになる場合に動作するのが<rt:if>
		<rt:else />は省略が可能です

条件分岐(否定)
	構文
		<rt:ifnot>
		~
		<rt:else />
		~
		</rt:ifnot>
	サンプル
		ソース
			※ $parser->setVariable('hoge',"a"));
			<rt:ifnot param="{$hoge}" value="a">
			hoge is not 'a'<br>
			</rt:else />
			hoge is 'a'<br>
			</rt:ifnot>
		実行結果
			hoge is 'a'<br>
	説明
		<rt:if>の反対の動作、条件がfalseになる場合に動作するのが<rt:ifnot>
		<rt:else />は省略が可能です

存在確認
	構文
		<rt:has>
		~
		</rt:has>
	パラメータ
		param	条件の判断に使用する変数を指定、{$hoge}、など、省略値はparam
	サンプル
		ソース
			※ $parser->setVariable('hoge',"a"));
			<rt:has param="{$hoge}">
			hoge is not empty<br>
			</rt:has>
		実行結果
			hoge is not empty<br>
	説明
		paramにarray(),null,""を指定すると<rt:has> ~ </rt:has>は実行されない

存在確認(否定)
	構文
		<rt:hasnot>
		~
		</rt:hasnot>
	パラメータ
		param	条件の判断に使用する変数を指定、{$hoge}、など、省略値はparam
	サンプル
		ソース
			※ $parser->setVariable('hoge',""));
			<rt:has param="{$hoge}">
			hoge is empty<br>
			</rt:has>
		実行結果
			hoge is empty<br>
	説明
		paramにarray(),null,""を指定すると<rt:hasnot> ~ </rt:hasnot>が実行される

差込
	構文
		<rt:include />
	パラメータ
		href	現在のテンプレートに差し込む別のテンプレートへのパスを指定します。
	サンプル
		ソース
			<rt:include href="./hoge.html" />
	説明
		hrefで指定したテンプレートが現在のテンプレートに読み込まれて表示されます

継承
	構文
		<rt:extends />
	パラメータ
		href	現在のテンプレート継承元テンプレートのパスを指定します。
	サンプル
		ソース
			<rt:extends href="./hoge.html" />
	説明
		hrefで指定したテンプレートから現在のテンプレートが派生していることを宣言します
		<rt:block>で継承元の同じ名前のブロックを置き換えることが出来ます

ブロック指定
	構文
		<rt:setblock />
	パラメータ
		href	
	サンプル
		ソース
			<rt:setblock href="./hoge.html" />
	説明
		

ブロック
	構文
		<rt:block>
		~
		</rt:block>
	パラメータ
		name	ブロック名を指定します、省略値はname
	サンプル
		ソース
			<rt:block name="hoge" />
			~
			</rt:block>
	説明
		<rt:extends />で指定したテンプレート内に存在する同じ名前のブロックを置き換えます

置換
	構文
		<rt:replace />
	パラメータ
		src		置換対象の文字列を指定します。
		dest	置換文字列を指定します。
	サンプル
		ソース
			<rt:replace src="hoge" dest="fuga" />
		実行結果
	説明
		<rt:extends />で指定したテンプレート内に存在する同じ名前のブロックを置き換えます

コメント
	構文
		<rt:invalid />
	パラメータ
		name	指定した名前の疑似Exceptionのみを対象にします、初期値は、exceptions(全ての疑似Exception)
		var		疑似Exceptionメッセージの列挙に使用する変数名を指定します、初期値は、errors
		type	出力のフォーマットを指定します、
				ulかplainのどちらかを指定できます、
				ulはulタグでフォーマッティングします、
				plainはそのまま出力されます、
				初期値は、ul
	サンプル
	説明
		ExceptionTrigger::raise()で疑似Exceptionが発行されている場合はそれを表示します

コメント
	構文
		<rt:comment>
		~
		</rt:comment>
	パラメータ
		なし
	サンプル
		ソース
			hoge<br>
			<rt:comment>
			fuga<br>
			</rt:comment>
			moga<br>
		実行結果
			hoge<br>
			moga<br>
	説明

		囲まれた文字列をコメントとして処理して結果に出力しないようにします

rhaco2ってどうやって使うの?

2009年12月31日 追記

以下の内容は、2009年02月01日の時点でのリポジトリ最新版で確認した記述です。

rhaco2は仕様がころころ変わっていたり、開発途中なためすでに内容が過去のものになっています。

なので、最新の内容については、rhaco.orgとかrhaco2 Documentsとかrhaco_jaをご参照ください。

Google経由で訪れていただいた方すいません。

最新を追いきれていません。


rhaco2どうやってつかうの@Linger::rhaco-ja より

現時点でのRhaco2はSetupが存在しないので設定などを手動で定義してあげる必要があります

でまず、Subversionがインストール済みだとして、

適当なディレクトリで

svn co http://rhaco.svn.sourceforge.net/svnroot/rhaco/trunk rhaco2

を実行

__settings__.php と名前を付けてファイルに

<?php
require_once("/var/www/html/rhaco2/Rhaco.php");
Rhaco::init(__FILE__,null,"http://localhost");

などと記述

"/var/www/html/rhaco2/Rhaco.php" の部分はRhaco.phpの絶対パスを指定します

相対パスでも今のところは良いみたい

使用するときは、例えば index.php と名前を付けたファイルに

<?php
include_once("./__settings__.php");

と記述すればOK

テンプレートを使いたいときは、

templateディレクトリを作り、そのパスを__settings__.phpに相対パスで指定

たとえば、__settings__.phpに

Rhaco::def("core.Template@path",Rhaco::path("template"));

と追記

※rev.4039で区切り文字が"::"から"@"に変更されているので要注意!

templateディレクトリにfoo.htmlを作り、index.phpに

Rhaco::import("core.Template");
$template = new Template();
print($template->read("foo.html"));

と追記すればfoo.htmlの内容が表示されます

あとはソース読んでねって事みたい

2009年01月10日 公開