flexy:nameuses="variable" -- flexy のフォーム要素の名前に、変数を使用する
説明
複数の入力欄を持つフォーム (例: グループのメンバーなど) が動的に生成される場合に、
この属性を使用して flexy 要素を作成します。その際、
sprintf を使用して変数の値を name 属性に設定します。
例
例 47-1flexy:ignore を使用したテンプレート <html>
<head>
<title>Example of name Uses</title>
</head>
<body>
<form name="formtest">
<span flexy:foreach="data,key,row">
{key}: <input name="data%s" flexy:nameuses="key" type="hidden" size="10"><br>
</span>
</form>
</body>
</html> |
|
例 47-2バックエンドのコードの一部 <?php
$this->data = array();
$elem = array();
$elem['formtest'] = &new HTML_Template_Flexy_Element();
$elem['formtest']->attributes['method'] = 'post';
$elem['formtest']->attributes['action'] = 'test';
for($i = 0; $i < 10; $i++) {
$this->data[$i] = $i;
$elem["data$i"] = new HTML_Template_Flexy_Element();
$elem["data$i"]->attributes['type'] = 'text';
$elem["data$i"]->attributes['size'] = $i;
}
$flexy->outputObject($this, $elem);
?> |
|
例 47-3コンパイルされたテンプレート <html>
<head>
<title>Example of name Uses</title>
</head>
<body>
<?php echo $this->elements['formtest']->toHtmlnoClose();?>
<?php if ($this->options['strict'] || (is_array($t->data) || is_object($t->data)))
foreach($t->data as $key => $row) {?>
<?php echo htmlspecialchars($key);?>: <?php if (!isset($this->elements[sprintf('data%s',$key)])) $this->elements[sprintf('data%s',$key)]= $this->elements['data%s'];
$this->elements[sprintf('data%s',$key)] = $this->mergeElement($this->elements['data%s'],$this->elements[sprintf('data%s',$key)]);
$this->elements[sprintf('data%s',$key)]->attributes['name'] = sprintf('data%s',$key);
echo $this->elements[sprintf('data%s',$key)]->toHtml();?><br>
<?php }?>
</form>
</body>
</html> |
|
例 47-4結果の出力 <html>
<head>
<title>test for PEAR bug#4683</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form name="formtest" method="post" action="test">
0: <input name="data0" type="text" size="0"><br>
1: <input name="data1" type="text" size="1"><br>
2: <input name="data2" type="text" size="2"><br>
3: <input name="data3" type="text" size="3"><br>
4: <input name="data4" type="text" size="4"><br>
5: <input name="data5" type="text" size="5"><br>
6: <input name="data6" type="text" size="6"><br>
7: <input name="data7" type="text" size="7"><br>
8: <input name="data8" type="text" size="8"><br>
9: <input name="data9" type="text" size="9"><br>
</form>
</body>
</html> |
|