Доступ к значению итерированного поля в PHP усов - PullRequest
6 голосов
/ 16 февраля 2012

Скажем, у меня есть массив в PHP, который выглядит следующим образом:

    $values = Array(
        '0' => 'value1',
        '1' => 'value2',
        '2' => 'value3'
    )

Я бы хотел перебрать массив, используя Усы, но мне бы хотелось связать это значение.Это то, что я надеюсь сделать:

    {{#values}}
        {{the current value}}
    {{/values}}

Я надеюсь, что возвращаемый результат будет:

    value1
    value2
    value3

Я обошел это, изменив мою структуру на:

    $values = Array(
        '0' => array('value=' =>'value1'),
        '0' => array('value=' =>'value2'),
        '0' => array('value=' =>'value3'),
    )

И вызвать {{valule}} внутри итератора Усов.

Должен ли я сделать это совершенно по-другому?Я использую SplFixedArray в PHP, и я хотел бы перебрать значения с помощью этого метода ...

Спасибо!

Ответы [ 3 ]

11 голосов
/ 07 апреля 2012

Неявный итератор - это путь к простым данным.Если ваши данные более сложны, тогда PHPs ArrayIterator хорошо справляется со своей задачей.

Вот пример, который я работаюНадеюсь, что это полезно для кого-то еще.

$simple_data = array('value1','value2','value3');   
$complex_data = array(array('id'=>'1','name'=>'Jane'),array('id'=>'2','name'=>'Fred') );

$template_data['simple'] = $simple_data;
$template_data['complex'] = new ArrayIterator( $complex_data ); 

$mustache->render('template_name', $template_data );

А в шаблоне вы могли бы иметь

{{#simple}}
      {{.}}<br />
{{/simple}}

{{#complex}}
   <p>{{ id }} <strong>{{ name }}</strong></p>
{{/complex}}
8 голосов
/ 16 февраля 2012

Вы можете использовать функцию неявного итератора усов для этого:

https://github.com/bobthecow/mustache.php/tree/master/examples/implicit_iterator

{{#values}}
    {{.}}
{{/values}}

Ваш исходный массив, вероятно, нуждается в числовых ключах и теперь в строке. Это может работать таким образом, но я не проверял это.

0 голосов
/ 07 февраля 2019

Я работал над очень старым фреймворком php, который использовал умный синтаксис, но двойные фигурные скобки, заставлял меня висеть довольно долго, поэтому следующее заставило цикл работать для меня :), может быть, это вам тоже поможет. 1001 *

{{ #each link in bluelinks }}
  <p><strong>{{ link }}</strong></p>
{{/each}}
...