Имя переменной из _multiple_ переменных в Twig - PullRequest
0 голосов
/ 11 июня 2018

Я использую Opencart, и у меня есть действительно полезный плагин из более старой версии в php.Я заметил, что веточка не так уж сложна, и я попытался преобразовать PHP-код в веточку.Простые циклы if / for / echos были достаточно просты, но первоначальный автор использовал динамически создаваемые имена переменных.

Я видел примеры использования атрибута и _context, когда динамическая часть происходит только из одной переменной.Но что происходит, когда имя переменной состоит из 2, 3 или более частей переменной?

Это фактический пример (и есть еще много подобных)

${'var_' . $extension['name'] . '_' . $geo_zone['geo_zone_id'] . '_' . $customer_group['customer_group_id'] . '_order_total_sort_order'};

Это что-тоэто может быть достигнуто или это способ мышления полностью несовместим с веткой?

РЕДАКТИРОВАТЬ: я понимаю, как мы используем значение динамически создаваемой переменной.Но возможно ли его инициализировать, не зная различных компонентов?Или проверить, существует ли такая переменная?В моем конкретном случае переменные создаются пользовательскими полями и затем используются свободно, также проходя проверку if.

<select name="var_<?= $geo_zone['geo_zone_id']; ?>_<?= $group['group_id']; ?>_tax_class_id"> <option value="0" <?php if(${'var_' . $geo_zone['geo_zone_id'] . '_' . $group['group_id'] . '_tax_class_id'} == 0){ echo 'selected'; } ?>><?= $text_none; ?></option> </select>

Я, честно говоря, понятия не имею, как это можно превратить впрут.

1 Ответ

0 голосов
/ 12 июня 2018

Ты просто конкататируешь их всех?

{% set long_variable_name_here = 'foo' %}


{% set long = 'long' %}
{% set variable = 'variable' %}
{% set name = 'name' %}
{% set here = 'here' %}


{{ attribute(_context, long~'_'~variable~'_'~name~'_'~here) }}

демо


{% set var_1_1_tax_class_id = 0 %}

<select name="var_{{ geo_zone['geo_zone_id'] | default(1) }}_{{ group['group_id']|default(1) }}_tax_class_id">
    <option value="0"{{ attribute(_context, 'var_'~geo_zone['geo_zone_id']|default(1)~'_'~group['group_id']|default(1)~'_tax_class_id') | default(-1) == 0 ? ' checked' }}>{{ text_none | default('text') }}</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...