View Helper - Cycle¶
Introduction¶
The Cycle helper is used to alternate a set of values.
Basic Usage¶
To add elements to cycle just specify them in constructor:
1 2 3 4 5 6 7 8 | <table>
<?php foreach ($this->books as $book): ?>
<tr style="background-color: <?php echo $this->cycle(array('#F0F0F0', '#FFF'))
->next() ?>">
<td><?php echo $this->escapeHtml($book['author']) ?></td>
</tr>
<?php endforeach ?>
</table>
|
The output:
1 2 3 4 5 6 7 8 | <table>
<tr style="background-color: #F0F0F0">
<td>First</td>
</tr>
<tr style="background-color: #FFF">
<td>Second</td>
</tr>
</table>
|
Or use assign(array $data) method and moving in backwards order:
1 2 3 4 5 6 7 8 9 | <?php $this->cycle()->assign(array('#F0F0F0', '#FFF')) ?>
<table>
<?php foreach ($this->books as $book): ?>
<tr style="background-color: <?php echo $this->cycle()->prev() ?>">
<td><?php echo $this->escapeHtml($book['author']) ?></td>
</tr>
<?php endforeach ?>
</table>
|
The output:
1 2 3 4 5 6 7 8 | <table>
<tr style="background-color: #FFF">
<td>First</td>
</tr>
<tr style="background-color: #F0F0F0">
<td>Second</td>
</tr>
</table>
|
Working with two or more cycles¶
To use two cycles you have to specify the names of cycles. Just set second parameter in cycle method: $this->cycle(array('#F0F0F0', '#FFF'), 'cycle2')
1 2 3 4 5 6 7 8 9 | <table>
<?php foreach ($this->books as $book): ?>
<tr style="background-color: <?php echo $this->cycle(array('#F0F0F0', '#FFF'))
->next() ?>">
<td><?php echo $this->cycle(array(1, 2, 3), 'number')->next() ?></td>
<td><?php echo $this->escapeHtml($book['author']) ?></td>
</tr>
<?php endforeach ?>
</table>
|
You can also use assign($data, $name) and setName($name) methods:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php
$this->cycle()->assign(array('#F0F0F0', '#FFF'), 'colors');
$this->cycle()->assign(array(1, 2, 3), 'numbers');
?>
<table>
<?php foreach ($this->books as $book): ?>
<tr style="background-color: <?php echo $this->cycle()->setName('colors')->next() ?>">
<td><?php echo $this->cycle()->setName('numbers')->next() ?></td>
<td><?php echo $this->escapeHtml($book['author']) ?></td>
</tr>
<?php endforeach ?>
</table>
|