2015-11-13 1 views
4

У меня есть настраиваемая жидкость ViewHelper, которая возвращает массив, и я хотел бы получить доступ к значению этого массива непосредственно в одной команде.Fluid: Прямо доступное значение массива, возвращаемое видом helper

В настоящее время я использую две команды:

{vendor:helper() -> v:variable.set(name: 'data')} 
Value of foo: {data.foo} 

Есть ли способ сделать это в одной команде? v:variable.get не подходит для этой задачи.

+1

Я не знаю чистого раствора жидкости. Альтернатива: вы можете дать помощнику вида предоставить дополнительный параметр, который берет свойство массива, которое должно быть возвращено, поэтому команда выглядит так: '{vendor: helper (свойство: 'foo')}'. Однако не такой элегантный, как раствор чистой жидкости. – Jost

ответ

0

Это зависит также от того, что вы действительно пытаетесь достичь. Если вы хотите отсортировать массив, вы должны создать другой viewhelper Если вы хотите создать массив, а затем получить доступ ко всем данным в другом месте, вы ищете помощник флюита псевдонима

Int he в последней ситуации, когда вы просматриваете прямой доступ к свойству сразу после вызова помощника и не более того, вам нужно изменить свой viewhelper с дополнительным значением. Если помощник Получать значение, вы возвращаете элемент, в противном случае она возвращает весь массив

0

v:variable.get из VHS viewhelpers делает именно то, что вы хотите:

{v:variable.get(name: 'data.{foo}')} 

Это возвращает элемент с индексом {Foo} из данных массива ,

0

Как @Jpsy сказал, что есть VHS Variable/GetViewHelper.

Но использование должно быть {v:variable.get(name: '{vendor:helper()}.foo')}.

Если вам нужен возвращенный массив вашего наблюдателя несколько раз в вашем шаблоне, лучше использовать его так, как вы уже делали. Потому что иначе вы бы вызвали PHP-метод, стоящий за viewhelper, для создания и возврата массива каждый раз, когда вы хотите снова обратиться к индексу уже ранее созданного массива.

0

Вы пишете, что используете пользовательский ViewHelper. Можете изменить?

Внутри ViewHelper вы можете легко присвоить переменной с:

$this->templateVariableContainer->add('variable', 'content');