如何在Twig中创建For to Hours

时间:2016-06-02 17:02:14

标签: php symfony twig

嗨,我是Symfony和Twig的新人,所以我有一个问题:
我怎样才能在树枝上创造这样的东西?

for ($i = 0; $ <10; $i++) {
   //do something
}

我的问题是,我必须在5分钟内填充一小时选项,例如:

<option> 00:05 </option>
<option> 00:10 </option>
<option> 00:15 </option>
<option> 00:20 </option>

到达60分钟时加1小时......

感谢您的建议......

3 个答案:

答案 0 :(得分:0)

在Twig中,您可以创建变量(甚至是数组)。在这种情况下,您可能需要创建一个字符串数组,然后像下面一样循环遍历它。请注意,这只是一种非常基本的方法。

        <label for="split-time">Please choose a 5-Minute Split Time:</label><br />
        <select id="split-time">
           {% set minutes = ["00", "05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55"]  %}
           {% for split in minutes %}
               <option value="00:{{ split }}">00:{{ split }}</option>
           {% endfor %}
        </select>

另一方面,您可能只想在控制器中进行一些准备工作,如下所示。假设你的Action是timeAction();你可以在时间动作中做到这一点:

        public function timeAction() {
            // GENERATE THE TIME INDICES:
            $timeIndices    = array();
            for($i=0; $i < 60; $i+=5){
                $val = $i;
                if($i < 10){
                    $val = "0" . $i;
                }
                $timeIndices[] = $val;
            }
            return $this->render('YourBundle:ControllerName:time.html.twig', array(
                'timeIndices'   => $timeIndices
            ));
        }

然后在Twig,你可以做到:

        <label for="split-time">Please choose a 5-Minute Split Time:</label><br />
        <select id="split-time">
           {% for timeIndex in timeIndices %}
               <option value="00:{{ timeIndex }}">00:{{ timeIndex }}</option>
           {% endfor %}
        </select>

答案 1 :(得分:-1)

最简单的方法是:

{% for minutes in range(0, 24 * 60 - 1, 5) %}
    <option>{{ (minutes * 60)|date('H:i', false) }}</option>
{% endfor %}

您可以根据需要更改输出格式。例如,如果您需要步长为15分钟并显示“ am / pm”,则可以使用以下变体:

{% for minutes in range(0, 24 * 60 - 1, 15) %}
    <option>{{ (minutes * 60)|date('h:i a', false) }}</option>
{% endfor %}

因此,您将获得以下选项:

<option>12:00 am</option>
<option>12:15 am</option>
<option>12:35 am</option>

这是一个非常灵活和容易的解决方案。

此外,您可以在几秒钟(或几分钟)内作为选项的值,如下所示:

{% for minutes in range(0, 24 * 60 - 1, 5) %}
    <option value="{{ minutes * 60 }}">{{ (minutes * 60)|date('H:i', false) }}</option>
{% endfor %}

答案 2 :(得分:-2)

我就是这样做的。

<select name="time">
    {% set i = 0 %}
    {% for j in 0..12 %}
        <option value={{ i }} >{{ i }}</option>
        {% set i = i + 5 %}
    {% endfor %}
</select>

根据您的要求调整编号。