Phalcon の Tag のヘルパによる表示例

Phalcon\Tag にはいろいろヘルパがあるがここではフォームに関するものについて volt での書き方と html の出力結果を書いておく．

# 基本

ここでは text_field() を使って例を出す。

- 何も設定しない

```volt:volt
{{ text_field() }}
```

```html:html
<input type="text" />
```

- 第一引き数に文字列を与える

```volt:volt
{{ text_field('hoge') }}
```

```html:html
<input type="text" id="hoge" name="hoge" />
```

- 第二引き数以降にキーと値を与える

```volt:volt
{{ text_field('hoge', 'class':'myclass', 'aaa': 'bbb') }}
```

```html:html
<input type="text" id="hoge" name="hoge" class="myclass" aaa="bbb" />
```
# 出力例

## text_field

「基本」を参照．

## password_field

```volt:volt
{{ password_field('hoge') }}
```

```html:html
<input type="password" id="hoge" name="hoge" />
```


## file_field

```volt:volt
{{ file_field('hoge') }}
```

```html:html
<input type="file" id="hoge" name="hoge" />
```

## check_field

```volt:volt
{{ check_field('hoge') }}
```

```html:html
<input type="checkbox" id="hoge" name="hoge" />
```

## radio_field

```volt:volt
{{ radio_field('hoge') }}
```

```html:html
<input type="radio" id="hoge" name="hoge" />
```

## date_field

```volt:volt
{{ date_field('hoge') }}
```

```html:html
<input type="date" id="hoge" name="hoge" />
```

## email_field

```volt:volt
{{ email_field('hoge') }}
```

```html:html
<input type="email" id="hoge" name="hoge" />
```

##  numeric_field

![screenshot 2014-07-23 4.17.17.png](https://qiita-image-store.s3.amazonaws.com/0/6975/968041c6-7888-56bc-284b-94b653800612.png)


ドキュメントが間違っているようだけど number_field ではなく numeric_field とのこと．
ドキュメント直ってないけどなぜか下記 Issue は close されている．

https://github.com/phalcon/cphalcon/issues/2149

Phalcon\Tag のページだと numericField になっている．

http://docs.phalconphp.com/ja/latest/api/Phalcon_Tag.html#class-phalcon-tag

![screenshot 2014-07-23 4.18.59.png](https://qiita-image-store.s3.amazonaws.com/0/6975/d8ca073d-4dad-2b24-6bad-668b334aca7e.png)

```volt:volt
{{ numeric_field('hoge') }}
```

```html:html
<input type="number" id="hoge" name="hoge" />
```

## submit_button

```volt:volt
{{ submit_button() }}
```

```html:html
<input type="submit" />
```

## select_static

このヘルパは 第一引き数だけだとエラーとなって動かない

```volt:volt
{{ select_static('hoge') }}
```

```html:html
Invalid data provided to SELECT helper
```

第二引き数に連想配列を指定

```volt:volt
{{ select_static('hoge', ['A': 'Active', 'B': 'Inactive']) }}
```

```html:html
<select id="hoge" name="hoge">
	<option value="A">Active</option>
	<option value="B">Inactive</option>
</select>
```

multiple を付けたい場合は単体だと表示してくれないので空文字列でも設定しておく．

```volt:volt
{{ select_static('hoge', ['A': 'Active', 'B': 'Inactive'], 'multiple': '') }}
```

```html:html
<select id="hoge" name="hoge" multiple="">
	<option value="A">Active</option>
	<option value="B">Inactive</option>
</select>
```

表示例

![screenshot 2014-07-23 4.24.39.png](https://qiita-image-store.s3.amazonaws.com/0/6975/582c487c-d729-0142-16b6-b0f02ecbfddb.png)


## select

select_static と同様，第一引き数だけだとエラーになる．

```volt:volt
{{ select('hoge') }}
```

```html:html
Invalid data provided to SELECT helper
```

select と select_static の違いは select は Phalcon\Mvc\Model\ResultsetInterface を渡すことができるらしい．
普通に連想配列を渡すと select_static と同じ動きはする． ResultsetInterface のほうはここでは省略．

```volt:volt
{{ select('hoge', ['A': 'Active', 'B': 'Inactive']) }}
```

```html:html
<select id="hoge" name="hoge">
	<option value="A">Active</option>
	<option value="B">Inactive</option>
</select>
```

## text_area

```volt:volt
{{ text_area('hoge') }}
```

```html:html
<textarea id="hoge" name="hoge"></textarea>
```

中身を追加したい場合．なぜか value 属性がついてて要らない気もするけど．

```volt:volt
{{ text_area('hoge', 'value': 'This is contents.') }}
```

```html:html
<textarea id="hoge" name="hoge" value="This is contents.">This is contents.</textarea>
```

## form

```volt:volt
{{ form() }}
```

```html:html
<form method="post">
```

第一引き数を指定した場合

```volt:volt
{{ form('hoge') }}
```

```html:html
<form action="/hoge" method="post">
```

属性指定は他と同様．

```volt:volt
{{ form('hoge', 'enctype': 'multipart/form-data') }}
```

```html:html
<form action="/hoge" enctype="multipart/form-data" method="post">
```

## end_form

```volt:volt
{{ end_form() }}
```

```html:html
</form>
```

ちなみに文字列で引き数渡しても効果はない

```volt:volt
{{ end_form('hoge') }}
```

```html:html
</form>
```

# 参考文献

API ドキュメント

> Class Phalcon\Tag — Phalcon 1.3.1 documentation
> http://docs.phalconphp.com/ja/latest/api/Phalcon_Tag.html

Volt についての説明

> Volt: テンプレートエンジン — Phalcon 1.3.1 documentation
> http://docs.phalconphp.com/ja/latest/reference/volt.html

ヘルパの説明

> Viewヘルパ — Phalcon 1.3.1 documentation
> http://docs.phalconphp.com/ja/latest/reference/tags.html