簡體   English   中英

樹枝中的變量名稱

[英]Variable variable name in twig

我有一個用於創建組合框表單元素的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->$keycol$choice->$valcol )。

無論如何我可以重新創建這個功能作為樹枝宏?

屬性函數執行此操作: http//twig.sensiolabs.org/doc/functions/attribute.html

{{ attribute(choice, valCol) }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM