你能有条件地将变量传递给Twig吗?

时间:2015-12-27 03:38:21

标签: php symfony twig

所以我正在构建一个组件,并希望能够将值绑定到它或将其留空。理想情况下,我想在没有if语句的情况下使用过滤器或某种类型的三元运算符。所以我可以在没有明确传递date

的情况下使用它
{% if date is not defined %}
    <input type='text' name="date" value="" class="form-control date-picker" />
    <input type='hidden' name="timezone" class="timezone" />
{% else %}
    <input type='text' name="{{date.name | default("date")}}" value="{{ date.value | default("")}}" class="form-control date-picker" />
    <input type='hidden' name="timezone" class="timezone" />
{% endif %}

这是我在尝试多项操作后最终得到的丑陋代码。

我无法在没有为date

提供值的情况下加载组件
$date = '';
return $this->render('ComponentBundle:Default:datepicker.html.twig',array(
            'date' => $date,
       ));

当我没有将date传递给视图时,我得到的错误是

Variable "date" does not exist in ComponentBundle:Default:datepicker.html.twig at line 10

1 个答案:

答案 0 :(得分:2)

您无法有条件地传递变量,但您可以在树枝内设置和测试一些变量。例如:

{% set var_date = date is defined and date is not empty ? date : {'name': 'date', 'value': ''} %}

<input type='text' name="{{ var_date.name }}" value="{{ var_date.value }}" class="form-control date-picker" />
<input type='hidden' name="timezone" class="timezone" />