我正在使用带有Twig的codeigniter - 我正在尝试创建一个动态选择框,其中包含来自数据库的数据。
这是我现在正在做的事情
// animals is $data['animals']=$this->loadmodel->some_function()
// animals passed from the controller ...
<select id="foo" class="form-control">
<option selected="true" >Animals</option>
{% for animal_key in animals %}
<option >
{{ animal_key ["animal_description"] }}
</option>
{% endfor %}
</select>
所以上面的一切都运作良好。但是,如果我想让它变得动态呢?每个选择框从控制器中的不同方法获取数据 - 假设我有其他方法的数据 - 比如这里
// orders is $data['orders']=$this->loadmodel->some_function()
// orders passed from the controller ...
<select id="foo" class="form-control">
<option selected="true" >orders</option>
{% for order_key in orders%}
<option >
{{ order_key ["order_description"] }}
</option>
{% endfor %}
</select>
<select id="foo" class="form-control">
<option selected="true" >Animals</option>
{% for animal_key in animals %}
<option >
{{ animal_key ["animal_description"] }}
</option>
{% endfor %}
</select>
我的想法是做这样的事情:
设置控制器名称的数组:
{% set controller_names = ['animals','orders']%}
设置控制器变量数组及其键:
{% set controller_vars =
['animals'=>'animal_description','orders'=>'order_description']%}
然后像那样迭代它
{% for names in controller_names %}
<select id="foo" class="form-control">
<option selected="true" >{{ name }}</option>
{% for controller_key in controller_vars %}
<option >
{{ controller_vars [ controller_key] }} //suppose to be Twig variables
</option>
{% endfor %}
</select>
{% endfor %}
所以我需要的是将set controller_vars数组转换为Twig变量(只要有可能)......
答案 0 :(得分:0)
您可以使用attribute功能:
{% for controller_key in controller_vars %}
<option >
{{ attribute(controller_key, controller_vars) }}
</option>
{% endfor %}
希望这个帮助