6

変ですね。を使用する{{ j }}と、12 個すべての数字が取得されますが、Twig 日付フィルターを追加すると、「Jan」が 12 回エコーされます。

1 年のすべての月をエコーアウトするにはどうすればよいですか? 代わりに配列を作成する必要がありますか?

<select>
{% for j in range(1, 12) %}
    <option>{{ j|date('M') }}</option>
{% endfor %}
</select>
4

3 に答える 3

21

これは、twig が j を 1970 年 1 月からの秒数として扱うためです (つまり、常に 1 月です)。

小枝のドキュメントから:

日付フィルターは、文字列 (strtotime 関数でサポートされている形式である必要があります)、DateTime インスタンス、または DateInterval インスタンスを受け入れます。

これはうまくいくはずです:

{% for j in range(1, 12) %}
    <option>{{ date('2012-' ~ j ~ '-01') |date('M') }}</option>
{% endfor %}
于 2012-09-18T12:48:24.543 に答える
3

Cyprian によって提供された解決策は、次のエラーをスローしました

関数「日付」は存在しません

だから私はコードを

{% for j in 1..12 %}
    <option>{{ j |date('2012-' ~ j ~ '-01') |date('M') }}</option>
{% endfor %}

これは私にとってはうまくいきました.... Cyprianに感謝します

于 2013-09-27T05:27:58.157 に答える