Bıyık'ta ilişkisel bir dizi üzerinde yineleme yapmak mümkün değildir, çünkü Bıyık bunu yinelenebilir bir liste yerine bir “karma” olarak görür. Ve listenin üzerinde yineleyebilirseniz bile, tuşlara erişemezdiniz.
Bunu yapmak için verilerinizi hazırlamanız gerekir. Verileri Bıyık'a geçirmeden önce bir foreach döngüsüyle yapabilirdiniz ya da dizinizi bir "Presenter" 'da sarmalayarak yapabilirsiniz. Böyle bir şey hile yapmak gerektiğini:
<?php
class IteratorPresenter implements IteratorAggregate
{
private $values;
public function __construct($values)
{
if (!is_array($values) && !$values instanceof Traversable) {
throw new InvalidArgumentException('IteratorPresenter requires an array or Traversable object');
}
$this->values = $values;
}
public function getIterator()
{
$values = array();
foreach ($this->values as $key => $val) {
$values[$key] = array(
'key' => $key,
'value' => $val,
'first' => false,
'last' => false,
);
}
$keys = array_keys($values);
if (!empty($keys)) {
$values[reset($keys)]['first'] = true;
$values[end($keys)]['last'] = true;
}
return new ArrayIterator($values);
}
}
Sonra sadece Presenter'da dizinizi sarın:
$view['data'] = new IteratorPresenter($view['data']);
veriler üzerinde yineleme sırasında Artık anahtarlara ve değerlere erişebilir
:
{{# data }}
{{ key }}: {{ value }}
{{/ data }}
Sınıf için çok teşekkürler. Bunu test ettim ve şimdi sabit bir canlı ortamda kullanıyorum. İyi çalışıyor. –