new HTML_Template_Flexy_Element (
string $tag = ''
, array $attributes
= = null
)
Flexy は、単一の軽量なクラスですべての HTML タグを表します。 クラスのすべての変数はパブリックとなり、それを使用することができます。 汎用的な代入メソッドや変換メソッドが使用できます。
toHtml() メソッドで、標準の HTML ではなく XHTML を出力させるには、 $element->setAttributes(array('flexy:xhtml'=>true)); を使用するか、 あるいは flexy:xhtml="true" をテンプレート内の要素の属性に指定します。
$tag
- HTML タグの名前。たとえば img は <img ....。
$attributes
-
属性の連想配列。toHtml() では key="value" 形式の出力になります。
値のない属性を表す場合は、値として TRUE を使用します。ここには
"href='/test.jpg' alt='test'" のような文字列も指定でき、
これはオブジェクトの属性の配列として扱われます。
$element->tag
html の要素名。例. img は <img...。
$element->attributes
要素の属性。
$element->children
内部に保持するすべての子要素。 toHtml() を実装する任意のオブジェクト、あるいは文字列を指定します。
$element->override
toHtml() がコールされた際に、タグの値ではなくこの値が出力されます。
$element->prefix
文字列、あるいは toHtml() メソッドを実装するオブジェクトで、 toHtml() の際にタグの HTML の前に返されます。
$element->suffix
文字列、あるいは toHtml() メソッドを実装するオブジェクトで、 toHtml() の際にタグの HTML の後に返されます。
$element->value
要素を作成する際に、すべての定義の後でマージされます。 値をここで代入します。toHtml() の際に toValue() メソッドがコールされ、 select の選択肢やチェックボックスの内容、入力値が適切に設定されます。
例外はスローされません。
This function can not be called statically.
要素を使用してテンプレートを変更する
<?php
$form = new HTML_Template_Flexy();
$form->compile('some_file_name');
// インスタンスを作成します (詳細は何も設定する必要がないことに注意しましょう)
$elements['test'] = new HTML_Template_Flexy_Element;
// 属性を変更します
$elements['test']->attributes['class'] = 'bold';
// 値を設定します
$elements['test']->setValue('Fred');
// それを何かでラップします
$elements['test']->prefix = '******';
$elements['test']->suffix = '!!!!!!';
// 異なる型の要素
$elements['test_textarea'] = new HTML_Template_Flexy_Element;
$elements['test_textarea']->setValue('Blogs');
// select のオプション
$elements['test_select'] = new HTML_Template_Flexy_Element;
$elements['test_select']->setOptions( array(
'123' => 'a select option',
'1234' => 'another select option'
));
$elements['test_select']->setValue('1234');
// チェックボックス
$elements['test_checkbox'] = new HTML_Template_Flexy_Element;
$elements['test_checkbox']->setValue(1);
$elements['test_checkbox']->setAttributes(array('flexy:xhtml'=>true));
// 配列形式のチェックボックス
$elements['test_checkbox_array[]'] = new HTML_Template_Flexy_Element;
$elements['test_checkbox_array[]']->setValue(array(1,2));
// ラジオボタン
$elements['test_radio'] = new HTML_Template_Flexy_Element;
$elements['test_radio']->setValue('yes');
$form->outputObject(new StdClass, $elements);
// 以下の例では新しく追加したデータは既存の属性用になります
?>
テンプレートの例
<body> <form name="xxxx"> <input name="test" length="12"> <textarea name="test_textarea"></textarea> <select name="test_select"></select> <input name="test_checkbox" type="checkbox" value="1"> <input name="test_checkbox_array[]" type="checkbox" value="1" />1<br /> <input name="test_checkbox_array[]" type="checkbox" value="2" />2<br /> <input name="test_checkbox_array[]" type="checkbox" value="3" />3<br /> <input name="test_radio" type="radio" id="yes" value="yes" />yes<br /> <input name="test_radio" type="radio" id="no" value="no" />no<br /> </form> </body>
テンプレートからの出力
<body> <form name="xxxx"> ******<input name="test" length="12" class="bold" value="fred">!!!!!! <textarea name="test_textarea">blogs</textarea> <select name="test_select"> <option value="123">a selection option</option> <option value="1234" selected>another selection option</option> </select> <input name="test_checkbox" type="checkbox" value="1" checked="checked" /> <input name="test_checkbox_array[]" type="checkbox" value="1" checked>1<br /> <input name="test_checkbox_array[]" type="checkbox" value="2" checked>2<br /> <input name="test_checkbox_array[]" type="checkbox" value="3">3<br /> <input name="test_radio" type="radio" id="yes" value="yes" checked>yes<br /> <input name="test_radio" type="radio" id="no" value="no">no<br /> </form> </body>