Получить имя переменной в Twig

Я использую шаблонизатор Twig и хочу создать фильтр

{{ my_variable|default_variable }}

который возвращает имя переменной (в данном случае строку «my_variable»), когда переменная пуста. Это возможно? Как я могу получить имя переменной, а не ее значение?


person marcosh    schedule 09.07.2014    source источник
comment
Вы хотите иметь возможность получить имя переменной, передаваемое фильтру, а не только значение?   -  person Chase    schedule 10.07.2014
comment
Главный вопрос. ПОЧЕМУ? тогда я смогу вам помочь. Потому что я не думаю, что было бы хорошим подходом показывать имя переменной пользователю.   -  person ncm    schedule 13.10.2015
comment
@imsiso angular использует аналогичное соглашение для обработки переменных. Я хотел бы напечатать имя переменной, которое будет обрабатываться angular.   -  person Eyal    schedule 16.10.2015
comment
@Eyal Вы можете использовать variuable_name вместо `{{имя_переменной}}, и у вас будет напечатано имя_переменной в виде текста, например: «Привет, мир!». Но украсть, я думаю, что это озеро безопасности, чтобы показать ваши серверные переменные в браузере. поэтому, если вы дадите мне пример своей проблемы, мы сможем найти хороший ответ.   -  person ncm    schedule 11.11.2015
comment
@Eyal Возможно, размещение вашей проблемы в виде вопроса может помочь. и тогда вы также можете разместить ссылку на свой вопрос здесь. (вы можете указать коды того, что вы уже сделали, чтобы люди могли помочь вам больше)   -  person ncm    schedule 11.11.2015


Ответы (1)


Я не знаю, возможно ли это, вы можете передать имя, которое хотите использовать в качестве аргумента, фильтру.

{{ my_variable|default_variable('my_variable') }}

тогда ваш фильтр:

$filter = new Twig_SimpleFilter('default_variable', function ($value, $defaultName) {
    return (String)$value?:$defaultName;
});

Это вернет строковую версию значения вашей переменной или, если она не может, имя по умолчанию.

person Chase    schedule 09.07.2014
comment
это просто поведение фильтра по умолчанию. Я хотел избежать повторения 'my_variable' - person marcosh; 10.07.2014
comment
ха-ха, я действительно не думал об этом, но я думаю, что это так. Да, извините, тогда я не знаю способа. - person Chase; 10.07.2014
comment
этот ответ - единственная возможность, хотя. сама переменная передается функции и не содержит информации о ее имени в шаблоне ветки - person oshell; 07.10.2015
comment
но эй. Почему? я имею в виду, почему вы хотите показать имя переменной пользователю? скажи мне, в чем идея, тогда я смогу предложить лучшую идею - person ncm; 13.10.2015