gpt4 book ai didi

php - Twig 中的变量变量名

转载 作者:可可西里 更新时间:2023-11-01 12:29:18 25 4
gpt4 key购买 nike

我有一个 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)访问它们。

无论如何我可以将这个函数重新创建为一个 twig 宏吗?

最佳答案

属性函数执行此操作:http://twig.sensiolabs.org/doc/functions/attribute.html

{{ attribute(choice, valCol) }}

关于php - Twig 中的变量变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com