【问题标题】:Variable variable name in twig树枝中的变量变量名
【发布时间】:2012-04-23 16:51:00
【问题描述】:

我有一个 Twig 宏,用于创建这样的组合框表单元素:

{% macro select(name, label, choices, help, value) %}
<div class="control-group">
    <label class="control-label" for="{{ name }}">{{ label }}</label>
    <div class="controls">
        {% for choice in choices %}
            {% if value is not empty and value == choice.id %}
                <option value="{{ choice.id }}" selected="selected">{{ choice.code }} - {{ choice.name }}</option>
            {% else %}
                <option value="{{ choice.id }}">{{ choice.name }}</option>
            {% endif %}
        {% endfor %}
        <p class="help-block">{{ help }}</p>
    </div>
</div>
{% endmacro %}

如您所见,它不是很灵活,因为我只能使用具有 id 和 name 字段的对象作为选项值和标签。在迁移到 twig 之前,我使用了这个 PHP 函数:

function form_select($name, $label, $choices, $keycol, $valcol, $value=null, $help=null)
{ ?>
<div class="control-group">
    <label class="control-label" for="<?php echo $name; ?>"><?php echo $label; ?></label>
    <div class="controls">
        <select name="<?php echo $name; ?>" class="span7" id="<?php echo $name; ?>">
            <?php foreach ($choices as $choice) : ?>
                <option value="<?php echo $choice->$keycol; ?>" <?php if ($choice->$keycol == $value) echo "selected"; ?>>
                    <?php echo $choice->$valcol; ?>
                </option>
            <?php endforeach; ?>
        </select>
        <p class="help-block"><?php echo $help; ?></p>
    </div>
</div>
<?php }

使用这个函数,我可以将任意对象发送到函数,并将其用作选项值和标签,方法是将字段名称传递给函数($keycol$valcol)并通过 PHP 的变量变量名称功能( $choice-&gt;$keycol$choice-&gt;$valcol)。

无论如何我可以将此函数重新创建为树枝宏吗?

【问题讨论】:

    标签: php twig


    【解决方案1】:

    属性函数是这样做的:http://twig.sensiolabs.org/doc/functions/attribute.html

    {{ attribute(choice, valCol) }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2014-09-02
      • 2013-08-08
      相关资源
      最近更新 更多