Skip to content

Commit 4ee5560

Browse files
committed
reference/forms/twig_reference 翻訳
1 parent 3c72573 commit 4ee5560

File tree

1 file changed

+340
-4
lines changed

1 file changed

+340
-4
lines changed

reference/forms/twig_reference.rst

Lines changed: 340 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,341 @@
1-
このページの翻訳はまだ行われていません。
2-
========================================
1+
.. index::
2+
single: Forms; Twig form function reference
3+
4+
Twig テンプレートのフォーム関数と変数
5+
==================================================
6+
7+
テンプレートでフォームを扱うとき、二つの強力な道具があります。
8+
9+
* フォームの各部を出力する:ref:`関数 <reference-form-twig-functions>
10+
* フィールドについてのあらゆる情報が取得できる:ref:`変数 <twig-reference-form-variables>`
11+
12+
関数はフィールドを出力するのによく使われます。一方、変数は普通はそれほど使いませんが、フィールドのラベル・ID属性・エラー、その他フィールドに関するあらゆる情報を利用することができ、とても強力です。
13+
14+
.. _reference-form-twig-functions:
15+
16+
Form 出力関数
17+
------------------------
18+
19+
このマニュアルではフォームを出力するためのありとあらゆる Twig 関数を掲載しています。様々な関数がありますが、それぞれが違うフォーム部品の出力に対応しています。(例えば、ラベル、エラーメッセージ、ウィジェットなど)
20+
21+
.. _reference-forms-twig-form:
22+
23+
form(view, variables)
24+
---------------------
25+
26+
フォーム全体のHTMLを出力します。
27+
28+
.. code-block:: jinja
29+
30+
{# フォームを出力し、submitメソッドを変更します #}
31+
{{ form(form, {'method': 'GET'}) }}
32+
33+
主にアプリケーションのプロトタイプを作成するときや、カスタムフォームテーマを利用するときに使います。フォームを出力するときにもっと柔軟性がほしいなら、フォームの各部品を出力する他のヘルパーを利用した方が良いでしょう。
34+
35+
.. code-block:: jinja
36+
37+
{{ form_start(form) }}
38+
{{ form_errors(form) }}
39+
40+
{{ form_row(form.name) }}
41+
{{ form_row(form.dueDate) }}
42+
43+
{{ form_row(form.submit, { 'label': '送信' }) }}
44+
{{ form_end(form) }}
45+
46+
.. _reference-forms-twig-start:
47+
48+
form_start(view, variables)
49+
---------------------------
50+
51+
フォームの開始タグを出力します。設定されたメソッドとアクションを考慮します。
52+
フォームがファイルアップロードを含んでいれば、適切な ``enctype`` も出力します。
53+
54+
.. code-block:: jinja
55+
56+
{# 開始タグを出力し、送信メソッドを変更します #}
57+
{{ form_start(form, {'method': 'GET'}) }}
58+
59+
.. _reference-forms-twig-end:
60+
61+
form_end(view, variables)
62+
-------------------------
63+
64+
フォームの終了タグを出力します。
65+
66+
.. code-block:: jinja
67+
68+
{{ form_end(form) }}
69+
70+
``render_rest`` をfalseにセットしない限り、 ``form_rest()`` も出力します。
71+
72+
.. code-block:: jinja
73+
74+
{# 未出力のフィールドを出力しません #}
75+
{{ form_end(form, {'render_rest': false}) }}
76+
77+
.. _reference-forms-twig-label:
78+
79+
form_label(view, label, variables)
80+
----------------------------------
81+
82+
指定したフィールドのラベルを出力します。第二引数として、このフィールドに出力したいラベルを渡すこともできます。
83+
84+
.. code-block:: jinja
85+
86+
{{ form_label(form.name) }}
87+
88+
{# 下記の二つの書き方は同じ意味になります #}
89+
{{ form_label(form.name, 'お名前', {'label_attr': {'class': 'foo'}}) }}
90+
{{ form_label(form.name, null, {'label': 'お名前', 'label_attr': {'class': 'foo'}}) }}
91+
92+
``variables`` について詳しくは ":ref:`twig-reference-form-variables`" を参照してください。
93+
94+
.. _reference-forms-twig-errors:
95+
96+
form_errors(view)
97+
-----------------
98+
99+
指定したフィールドのエラーを出力します。
100+
101+
.. code-block:: jinja
102+
103+
{{ form_errors(form.name) }}
104+
105+
{# グローバルなエラーを出力します #}
106+
{{ form_errors(form) }}
107+
108+
.. _reference-forms-twig-widget:
109+
110+
form_widget(view, variables)
111+
----------------------------
112+
113+
指定したフィールドの HTML ウィジェットを出力します。
114+
フォーム全体やフォームの集合に対して使用すると、それに含まれている全フィールドの各行を出力します。
115+
116+
.. code-block:: jinja
117+
118+
{# ウィジェットを出力し、 "foo" クラスを追加します #}
119+
{{ form_widget(form.name, {'attr': {'class': 'foo'}}) }}
120+
121+
``form_widget`` の第二引数は変数の配列です。
122+
一番よく使われるのは ``attr`` で、HTMLウィジェットに追加する属性の配列です。フィールドのタイプによってはテンプレートに関係する他の変数も渡すことができます。
123+
``attributes`` は一度に多数のフィールドを出力するときでも(たとえば、 ``form_widget(form)`` としたとき)再帰しません。
124+
125+
``variables`` についての詳細は ":ref:`twig-reference-form-variables`" を参照してください。
126+
127+
.. _reference-forms-twig-row:
128+
129+
form_row(view, variables)
130+
-------------------------
131+
132+
指定したフィールドの「行」、つまりラベル・エラーメッセージ・ウィジェットの組み合わさったものを出力します。
133+
134+
.. code-block:: jinja
135+
136+
{# 行を出力しますが、ラベルはfooに変更します #}
137+
{{ form_row(form.name, {'label': 'foo'}) }}
138+
139+
``form_row`` の第二引数は変数の配列です。
140+
上の例のように、 Symfony で提供されているテンプレートではラベルのみ上書きすることができます。
141+
142+
``variables`` について詳細は ":ref:`twig-reference-form-variables`" を参照してください。
143+
144+
.. _reference-forms-twig-rest:
145+
146+
form_rest(view, variables)
147+
--------------------------
148+
149+
指定したフォームについてまだ出力されていない全てのフィールドを出力します。
150+
hidden フィールドや、出力し忘れたフィールドを出力してくれるので、いつもこのヘルパーを入れておくと便利です。
151+
152+
.. code-block:: jinja
153+
154+
{{ form_rest(form) }}
155+
156+
.. _reference-forms-twig-enctype:
157+
158+
form_enctype(view)
159+
------------------
160+
161+
.. note::
162+
163+
このヘルパーは Symfony 2.3 で廃止され、 Symfony 3.0 で削除される予定です。代わりに ``form_start()`` を使用してください。
164+
165+
フォームに少なくとも一つのファイルアップロードフィールドがあるとき、このヘルパーは必要な ``enctype="multipart/form-data"`` フォーム属性を出力します。 form タグにいつでもこれを含めておくと便利です。
166+
167+
.. code-block:: html+jinja
168+
169+
<form action="{{ path('form_submit') }}" method="post" {{ form_enctype(form) }}>
170+
171+
Form テストリファレンス
172+
--------------------------
173+
174+
テストは、 ``is`` と一緒に使うことで条件を作ることができます。
175+
詳しくは `Twig ドキュメント`_ を参照してください。
176+
177+
.. _form-twig-selectedchoice:
178+
179+
selectedchoice(selected_value)
180+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
181+
182+
このテストは、現在の選択肢が ``selected_value`` に等しいかどうかを調べます。 ``selected_value`` が配列のときには、現在の選択肢が ``selected_value`` の配列の中に含まれているかどうかを調べます。
183+
184+
.. code-block:: jinja
185+
186+
<option {% if choice is selectedchoice(value) %} selected="selected"{% endif %} ...>
187+
188+
.. _`twig-reference-form-variables`:
189+
190+
フォーム変数の詳細
191+
-------------------------
192+
193+
.. tip::
194+
195+
全てのフォーム変数の一覧は :ref:`reference-form-twig-variables` にあります。
196+
197+
上に出てきたほとんど全ての Twig 関数では、最後の引数はフォームの一部分を出力する時に使われる変数の配列です。
198+
例えば、次のコードはフィールドのウィジェットを出力しますが、特別なクラスを含めるように変更されています。
199+
200+
.. code-block:: jinja
201+
202+
{# ウィジェットを出力し、 "foo" クラスを追加します #}
203+
{{ form_widget(form.name, { 'attr': {'class': 'foo'} }) }}
204+
205+
この変数の配列の目的(どこから来て何をするのか)はわかりにくいかもしれませんが、信じられないぐらい強力です。
206+
フォームのどの部分を出力するときでも、その部分を出力するブロックはたくさんの変数を使います。
207+
デフォルトでは、ブロックは `form_div_layout.html.twig`_ の中に書かれています。
208+
209+
一例として ``form_label`` を見てみましょう。
210+
211+
.. code-block:: jinja
212+
213+
{% block form_label %}
214+
{% if not compound %}
215+
{% set label_attr = label_attr|merge({'for': id}) %}
216+
{% endif %}
217+
{% if required %}
218+
{% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
219+
{% endif %}
220+
{% if label is empty %}
221+
{% set label = name|humanize %}
222+
{% endif %}
223+
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}</label>
224+
{% endblock form_label %}
225+
226+
このブロックはいくつか変数を使っています。すなわち、 ``compound``, ``label_attr``, ``required``,
227+
``label``, ``name`` そして ``translation_domain`` です。
228+
変数はフォームレンダリング機構によって利用可能になっています。しかし、もっと重要なことは、この変数は開発者が ``form_label`` を呼び出すときに(上の例はラベルを出力する時のものなので)上書きすることができるということです。
229+
230+
上書きできる変数はフォームのどの部分を出力しようとしているか(例えば、ラベルかウィジェットか)、あるいはどのフィールドを出力しようとしているか(例えば、 ``choice`` ウィジェットには ``expanded`` という追加オプションがあります)によって異なります。
231+
`form_div_layout.html.twig`_ には全てのオプションが網羅されています。
232+
233+
.. tip::
234+
235+
内部的には、変数は Form コンポーネントがフォームの各ノードについて ``buildView`` や ``finishView`` を呼び出したときに ``FormView`` によって利用可能になります。
236+
特定のフィールドについてどんなビュー変数が利用できるのか知りたいときは、そのフォームフィールド(および親のフィールド)のソースコードを調べ、上の二つのメソッドを見てください。
237+
238+
.. note::
239+
240+
フォーム全体(あるいは埋め込みフォーム全体)を一度に出力する場合は、 ``variables`` 引数はそのフォーム自身のみに適用され、フォームの子要素には適用されません。
241+
つまり、下のサンプルコードでは、 "foo" クラス属性はフィールドには適用され **ません** 。
242+
243+
.. code-block:: jinja
244+
245+
{# 機能しません。変数は再帰しないため。 #}
246+
{{ form_widget(form, { 'attr': {'class': 'foo'} }) }}
247+
248+
.. _reference-form-twig-variables:
249+
250+
Form 変数リファレンス
251+
~~~~~~~~~~~~~~~~~~~~~~~~
252+
253+
下の変数は全てのフィールドタイプに共通です。フィールドタイプの中にはもっと多くの変数があるものもあり、特定のフィールドのみに有効な変数もあります。
254+
255+
テンプレートに ``form`` 変数が含まれていて ``name`` フィールドの変数にアクセスしたいとき、 :class:`Symfony\\Component\\Form\\FormView` オブジェクトの ``vars`` プロパティを使うことによりアクセスできます。
256+
257+
.. configuration-block::
258+
259+
.. code-block:: html+jinja
260+
261+
<label for="{{ form.name.vars.id }}"
262+
class="{{ form.name.vars.required ? 'required' : '' }}">
263+
{{ form.name.vars.label }}
264+
</label>
265+
266+
.. code-block:: html+php
267+
268+
<label for="<?php echo $view['form']->get('name')->vars['id'] ?>"
269+
class="<?php echo $view['form']->get('name')->vars['required'] ? 'required' : '' ?>">
270+
<?php echo $view['form']->get('name')->vars['label'] ?>
271+
</label>
272+
273+
.. versionadded:: 2.3
274+
The ``method`` and ``action`` variables were introduced in Symfony 2.3.
275+
276+
.. versionadded:: 2.4
277+
``submitted`` 変数は Symfony2.4 で追加されました。
278+
279+
+------------------------+-------------------------------------------------------------------------------------+
280+
| 変数名 | 使い方 |
281+
+========================+=====================================================================================+
282+
| ``form`` | 現在の``FormView`` インスタンス |
283+
+------------------------+-------------------------------------------------------------------------------------+
284+
| ``id`` | 出力される ``id`` HTML属性 |
285+
+------------------------+-------------------------------------------------------------------------------------+
286+
| ``name`` | フィールド名 (例えば ``title``) ただし ``name`` HTML属性ではありません。 |
287+
| | ``name`` HTML属性は ``full_name`` です。 |
288+
+------------------------+-------------------------------------------------------------------------------------+
289+
| ``full_name`` | 出力される ``name`` HTML属性 |
290+
+------------------------+-------------------------------------------------------------------------------------+
291+
| ``errors`` | 個別のフィールドについての全てのエラーの配列d |
292+
| | (たとえば ``form.title.errors`` のように) |
293+
| | ``form.errors`` はフォームが正しいかどうかを調べるのに利用することはできません。|
294+
| | グローバルなエラーしか返さないので、 個別のフィールドにはエラーがある可能性があるからです。
295+
| | 代わりに ``valid`` を使ってください。 |
296+
+------------------------+-------------------------------------------------------------------------------------+
297+
| ``submitted`` | フォームが送信されたかどうか ``true`` 又は ``false`` で返します。|
298+
+------------------------+-------------------------------------------------------------------------------------+
299+
| ``valid`` | フォーム全体にエラーが無いかどうか ``true`` 又は ``false`` で返します。 |
300+
+------------------------+-------------------------------------------------------------------------------------+
301+
| ``value`` | 出力時に利用される値(大抵の場合は ``value`` HTML属性) |
302+
+------------------------+-------------------------------------------------------------------------------------+
303+
| ``read_only`` | ``true`` であれば ``readonly="readonly"`` がフィールドに追加されます。
304+
+------------------------+-------------------------------------------------------------------------------------+
305+
| ``disabled`` | ``true`` であれば ``disabled="disabled"`` がフィールドに追加されます。 |
306+
+------------------------+-------------------------------------------------------------------------------------+
307+
| ``required`` | ``true`` であれば ``required`` 属性がフィールドに追加され、HTML5のバリデーションを有効にします。 |
308+
| | さらに、 ``required`` クラスがラベルに追加されます。 |
309+
+------------------------+-------------------------------------------------------------------------------------+
310+
| ``max_length`` | エレメントに ``maxlength`` 属性を追加します。(2.5で廃止され、3.0で削除予定です。代わりに ``attr[maxlength]`` を使ってください) |
311+
+------------------------+-------------------------------------------------------------------------------------+
312+
| ``pattern`` | エレメントに ``pattern`` 属性を追加します。(2.5で廃止され、3.0で削除予定です。代わりに ``attr[pattern]`` を使ってください) |
313+
+------------------------+-------------------------------------------------------------------------------------+
314+
| ``label`` | 出力されるラベル文字列。 |
315+
+------------------------+-------------------------------------------------------------------------------------+
316+
| ``multipart`` | もし ``true`` なら、 ``form_enctype`` は ``enctype="multipart/form-data"`` を出力します。 |
317+
| | 親のフォームだけに適用されます。 |
318+
+------------------------+-------------------------------------------------------------------------------------+
319+
| ``attr`` | フィールドに HTML 属性として出力される key-value 配列。 |
320+
+------------------------+-------------------------------------------------------------------------------------+
321+
| ``compound`` | フィールドが実際は子フィールドを保持しているかどうか。|
322+
| | (例えば ``choice`` フィールドがあるときに、それがチェックボックスの集合で成り立っているかどうか。 |
323+
+------------------------+-------------------------------------------------------------------------------------+
324+
| ``block_prefixes`` | 親タイプ全ての名前の配列 |
325+
+------------------------+-------------------------------------------------------------------------------------+
326+
| ``translation_domain`` | 現在のフォームの翻訳ドメイン |
327+
+------------------------+-------------------------------------------------------------------------------------+
328+
| ``cache_key`` | キャッシュで利用される一意なキー |
329+
+------------------------+-------------------------------------------------------------------------------------+
330+
| ``data`` | タイプの変換された(ノーマライズされた)データ |
331+
+------------------------+-------------------------------------------------------------------------------------+
332+
| ``method`` | 現在のフォームのメソッド(GET, POSTなど) |
333+
+------------------------+-------------------------------------------------------------------------------------+
334+
| ``action`` | 現在のフォームのアクション |
335+
+------------------------+-------------------------------------------------------------------------------------+
336+
337+
.. _`form_div_layout.html.twig`: https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
338+
.. _`Twig ドキュメント`: http://twig.sensiolabs.org/doc/templates.html#test-operator
339+
340+
.. 2014/04/19 77web b4a0fb09a2e8a30345d8f4c86c7cd8f8662d6ce3
3341
4-
翻訳にご協力くださる方は
5-
`github/symfony-japan <https://github.com/symfony-japan/symfony-docs-ja/wiki>`_ まで!

0 commit comments

Comments
 (0)