Source of file PartialLoop.php
Size: 2,119 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/View/Helper/PartialLoop.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\View\Helper; use Traversable; use Zend\Stdlib\ArrayUtils; use Zend\View\Exception; /** * Helper for rendering a template fragment in its own variable scope; iterates * over data provided and renders for each iteration. */ class PartialLoop extends Partial { /** * Marker to where the pointer is at in the loop * * @var int */ protected $partialCounter = 0; /** * Renders a template fragment within a variable scope distinct from the * calling View object. * * If no arguments are provided, returns object instance. * * @param string $name Name of view script * @param array $values Variables to populate in the view * @throws Exception\InvalidArgumentException * @return string */ public function __invoke($name = null, $values = null) { if (0 == func_num_args()) { return $this; } if (!is_array($values)) { if ($values instanceof Traversable) { $values = ArrayUtils::iteratorToArray($values, false); } elseif (is_object($values) && method_exists($values, 'toArray')) { $values = $values->toArray(); } else { throw new Exception\InvalidArgumentException('PartialLoop helper requires iterable data'); } } // reset the counter if it's called again $this->partialCounter = 0; $content = ''; foreach ($values as $item) { $this->partialCounter++; $content .= parent::__invoke($name, $item); } return $content; } /** * Get the partial counter * * @return int */ public function getPartialCounter() { return $this->partialCounter; } } |