1.9.3. フォームヘルパー

すべてのヘルパーは適切なエスケープを自動的に適用します。つまり、{{= ... }} を使用して出力できます。{{h ... }} などを使用すると、出力が二重にエスケープされてしまいます。

また、PHPテンプレートコードでは、$this のメソッドとしてヘルパーを呼び出すこともできます。

最後に、これらのヘルパーの多くは、HTML タグの属性として名前付きパラメータの可変長リストを受け取ります。つまり、ヘルパーメソッドのパラメータであるかのように、ほぼすべての属性を追加できます。パラメータ名のアンダースコアはダッシュに変換されます。例えば、foo_bar: 'baz' は、ヘルパーの出力で foo-bar="baz" になります。名前付きパラメータとして使用できない属性については、attr 配列パラメータを使用してください。

1.9.3.1. Form Tag

フォームを開くには次のようにします:

{{= form (
    action: '/hello',
    attr: [],               // (array) オプションのキー・バリュー属性
    id: 'form-id'           // (...mixed) オプションの名前付きパラメータ属性
) }}
<!-- デフォルトは method="post" action="" enctype="multipart/form-data" -->
<form method="post" action="/hello" enctype="multipart/form-data" id="form-id">

フォームを閉じるには単に </form> を使用します。

1.9.3.2. Input Tags

1.9.3.2.1. checkboxField

{{= checkboxField (
    name: 'flag',
    value: 'foo',
    checked: true,
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="checkbox" name="flag" value="foo" checked />

1.9.3.2.2. checkboxFields

checkboxFields ヘルパーは、一度に1つ以上のチェックボックスに使用でき、checkboxField ヘルパーよりも機能が豊富です:

  • options 配列は、フィールドの一部として1つ以上のチェックボックスを指定し、チェック時の各値と対応するラベルを定義します。
  • options に複数の要素がある場合、フィールド名の末尾に自動的に []が追加され、配列になります。
  • value 属性は options と照合され、正しいチェックボックスが自動的に checked になります。
  • default パラメータがnull以外の場合、チェックボックスがチェックされていない時にその値の隠しフィールドが生成されます。
{{= checkboxFields (
    name: 'flags',
    value: 'bar',
    default: '',
    options: [
        'foo' => 'Foo Flag',
        'bar' => 'Bar Flag',
        'baz' => 'Baz Flag',
    ],
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="hidden" name="flags" value="" />
<label><input type="checkbox" name="flags[]" value="foo" /> Foo Flag</label>
<label><input type="checkbox" name="flags[]" value="bar" checked /> Bar Flag</label>
<label><input type="checkbox" name="flags[]" value="baz" /> Baz Flag</label>

1.9.3.2.3. colorField

{{= colorField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="color" name="foo" value="bar" />

1.9.3.2.4. dateField

{{= dateField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="date" name="foo" value="bar" />

1.9.3.2.5. datetimeField

{{= datetimeField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="datetime" name="foo" value="bar" />

1.9.3.2.6. datetimeLocalField

{{= datetimeLocalField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="datetime-local" name="foo" value="bar" />

1.9.3.2.7. emailField

{{= emailField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="email" name="foo" value="bar" />

1.9.3.2.8. fileField

{{= fileField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="file" name="foo" value="bar" />

1.9.3.2.9. hiddenField

{{= hiddenField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="hidden" name="foo" value="bar" />

1.9.3.2.10. inputField

必要な type を指定する。

{{= inputField (
    type: 'text',
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="text" name="foo" value="bar" />

1.9.3.2.11. monthField

{{= monthField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="month" name="foo" value="bar" />

1.9.3.2.12. numberField

{{= numberField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="number" name="foo" value="bar" />

1.9.3.2.13. passwordField

{{= passwordField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="password" name="foo" value="bar" />

1.9.3.2.14. radioField

{{= radioField (
    name: 'foo',
    value: 'baz',
    checked: true,
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="radio" name="foo" value="baz" checked />

1.9.3.2.15. radioFields

radioFields ヘルパーは radioField ヘルパーよりも機能が豊富です:

  • options パラメータは、フィールドの一部として1つ以上のラジオボタンを指定し、チェック時の値と対応するラベルを定義します。
  • value パラメータは options と照合され、正しいラジオボタンが自動的に checked になります。
{{= radioFields (
    name: 'foo',
    value: 'baz',
    options: [
        'bar' => 'Bar Label',
        'baz' => 'Baz Label,
        'dib' => 'Dib Label',
    ),
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<label><input type="radio" name="foo" value="bar" /> Bar Label</label>
<label><input type="radio" name="foo" value="baz" checked /> Baz Label</label>
<label><input type="radio" name="foo" value="dib" /> Dib Label</label>

1.9.3.2.16. rangeField

{{= rangeField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="range" name="foo" value="bar" />

1.9.3.2.17. searchField

{{= searchField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="search" name="foo" value="bar" />

1.9.3.2.18. select

options パラメータを使用して <option> タグを記述します。 placeholder パラメータは、オプションが選択されていない場合のプレースホルダーラベルとして扱われます。default パラメータがnull以外の場合、そのプレースホルダーの値を指定します。 複数選択を設定するには multiple: true を使用します。これにより、名前にまだ [] が付いていない場合は自動的に追加されます。

{{= select (
    name: 'foo',
    value: 'dib',
    placeholder: 'Please pick one',
    default: '',
    options: [
        'bar' => 'Bar Label',
        'baz' => 'Baz Label',
        'dib' => 'Dib Label',
        'zim' => 'Zim Label',
    ],
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<select name="foo">
    <option value="" disabled>Please pick one</option>
    <option value="bar">Bar Label</option>
    <option value="baz">Baz Label</option>
    <option value="dib" selected>Dib Label</option>
    <option value="zim">Zim Label</option>
</select>

このヘルパーはオプショングループもサポートしています。options 配列の値自体が配列の場合、その要素のキーが <optgroup> のラベルとして使用され、値の配列がそのグループ内のオプションになります。

{{= select (
    name: 'foo',
    value: 'bar',
    options: => [
        'Group A' => [
            'bar' => 'Bar Label',
            'baz' => 'Baz Label',
        ],
        'Group B' => [
            'dib' => 'Dib Label',
            'zim' => 'Zim Label',
        ],
    ],
) }}
<select name="foo">
    <optgroup label="Group A">
        <option value="bar">Bar Label</option>
        <option value="baz">Baz Label</option>
    </optgroup>
    <optgroup label="Group B">
        <option value="dib" selected>Dib Label</option>
        <option value="zim">Zim Label</option>
    </optgroup>
</select>

1.9.3.2.19. telField

{{= telField(
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="tel" name="foo" value="bar" />

1.9.3.2.20. textField

{{= textField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="text" name="foo" value="bar" />

1.9.3.2.21. textarea

{{= textarea (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<textarea name="foo">bar</textarea>

1.9.3.2.22. timeField

{{= timeField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="time" name="foo" value="bar" />

1.9.3.2.23. urlField

{{= urlField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="url" name="foo" value="bar" />

1.9.3.2.24. weekField

{{= weekField (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="week" name="foo" value="bar" />

1.9.3.3. Button Tags

各種ボタンタグのヘルパーです。

1.9.3.3.1. button

{{= button (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="button" name="foo" value="bar" />

1.9.3.3.2. imageButton

{{= imageButton (
    name: 'foo',
    src: '/images/map.png',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="image" name="foo" src="/images/map.png" />

1.9.3.3.3. submitButton

{{= submitButton (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="submit" name="foo" value="bar" />

1.9.3.3.4. resetButton

{{= resetButton (
    name: 'foo',
    value: 'bar',
    attr: [],               // (array) オプションのキー・バリュー属性:
    ...                     // (...mixed) オプションの名前付きパラメータ属性
) }}
<input type="reset" name="foo" value="bar" />

1.9.3.4. Label Tag

<label> タグのためのヘルパー。

{{= label (
    'Label For Field',      // (string) label text
    attr: [],               // (array) オプションのキー・バリュー属性:
    for: 'field'            // (...mixed) オプションの名前付きパラメータ属性
) }}
<label for="field">Label For Field</label>