public function render()
{
$output = Hook::trigger('breadcrumbStart');
$outputItem = null;
/* breadcrumb keys */
$breadcrumbKeys = array_keys($this->_breadcrumbArray);
$lastKey = end($breadcrumbKeys);
/* html elements */
$linkElement = new Html\Element();
$linkElement->init('a');
$itemElement = new Html\Element();
$itemElement->init('li');
$listElement = new Html\Element();
$listElement->init('ul', ['class' => $this->_optionArray['className']['list']]);
/* collect item output */
foreach ($this->_breadcrumbArray as $key => $value) {
$title = array_key_exists('title', $value) ? $value['title'] : null;
$route = array_key_exists('route', $value) ? $value['route'] : null;
if ($title) {
$outputItem .= '<li>';
/* create a link */
if ($route) {
$outputItem .= $linkElement->attr('href', $this->_registry->get('parameterRoute') . $route)->text($title);
} else {
$outputItem .= $title;
}
$outputItem .= '</li>';
/* add divider */
if ($key !== $lastKey) {
$outputItem .= $itemElement->addClass($this->_optionArray['className']['divider'])->text($this->_optionArray['divider']);
}
}
}
/* collect list output */
if ($outputItem) {
$output = $listElement->html($outputItem);
}
$output .= Hook::trigger('breadcrumbEnd');
return $output;
}