Содержание


Breadcrumbs Helper


Breadcrumbs Helper,навигация, ZF2, Zend Framework 2, хлебные крошки



Breadcrumbs (хлебные крошки) используются для указания пользователю, где относительно карты сайта он сейчас находится и обычно выглядит подобным образом: «Вы сейчас тут: Home > Products > FantasticProduct 1.0». Помощник Breadcrumbs использует такую же логику как и Breadcrumbs Pattern - Yahoo! Design Pattern Library, а так же позволяет осуществлять простую настройку: минимамльная/максимальная глубина, отступы, разделители, должен ли последний элемент быть ссылкой.

Breadcrumbs работает по следующему принципу:  находит самую «глубокую» активную страницу в контейнере навигации и рендерит весь путь до корня сайта начиная с этой страницы. Для страниц MVC «активность» проверяется путем проверки объекта запроса, как указано в разделе  про Zend\Navigatio\Page\Mvc.

В помощнике свойство minDepth установлено по умолчанию в «1», что означает: если Вы находитесь на корневой странице, то хлебные крошки отображаться не будут. Если указать maxDepth, то вывод хлебных крошек будет происходить не болььше заданной глубины. Например: если вы аходитесь на странице с глубиной 3, а maxDepth установлен в 2, то отоброжаться будет так, как будто вы находитесь на странице с глубиной «2».


Методы предоставляемые помощником Breadcrumbs:

1) {get|set}Separator() gets/sets (получить/установить) разделитель строк, который будет использоваться между хлебными крошками. По-умолчания используется «>».

2) {get|set}LinkLast() gets/sets (получить/установить) должен ли последний элемент в цепочке быть якорем или нет. По-умолчанию «FALSE».

3) {get|set}Partial() gets/sets (получить/установить) частичный скрипт вида (partial view script) , используемый для отображения хлебных крошек. Если частичный(вспомогательный) скрипт вида задан, то будет использоваться метод  помощника renderPartial(). Если же не задан, то используется метод renderStraight(). Помощник ищет строку или Массив с двумя элементами. Если указана строка -  то это имя скрипта, которое нужно использовать. Если же массив, то первый элемент будет использоваться как имя скрипта, а второй как имя модуля, в котором он находится.

4) renderStraight() – метод рендеринга по-умолчанию.

5) renderPartial() – используется для рендеринга, если указан вспомогательный скрипт вида.

Рендеринг (отображения) breadcrumbs

В этом примере показано как использовать breadcrumbs с настройками по-умолчанию:

In a view script or layout:
<?php echo $this->navigation()->breadcrumbs(); ?>
 
The two calls above take advantage of the magic __toString() method,
and are equivalent to:
<?php echo $this->navigation()->breadcrumbs()->render(); ?>
 
Output:
<a href="/products">Products</a> > <a href="/products/server">Foo Server</a> > FAQ

Задание отступов

В этом примере показано как использовать breadcrumbs и задавать отступы:

Rendering with 8 spaces indentation:
<?php echo $this->navigation()->breadcrumbs()->setIndent(8);?>
 
Output:
        <a href="/products">Products</a> > <a href="/products/server">Foo Server</a> > FAQ

Настройка вывода breadcrumbs

В этом примере показано как использовать breadcrumbs с различными настройками вывода:

In a view script or layout:
 
<?php
echo $this->navigation()
          ->breadcrumbs()
          ->setLinkLast(true)                   // link last page
          ->setMaxDepth(1)                      // stop at level 1
          ->setSeparator(' ▶' . PHP_EOL); // cool separator with newline
?>
 
Output:
<a href="/products">Products</a> ▶
<a href="/products/server">Foo Server</a>
 
/////////////////////////////////////////////////////
 
Setting minimum depth required to render breadcrumbs:
 
<?php
$this->navigation()->breadcrumbs()->setMinDepth(10);
echo $this->navigation()->breadcrumbs();
?>
 
Output:
Nothing, because the deepest active page is not at level 10 or deeper.

Рендеринг breadcrumbs используя вспомогательный скрипт вида

В этом примере показано как использовать breadcrumbs и вспомогательным скриптом вида. Для вызова метода setPartial() Вы должны настроить вспомогательный скрипт вида, который будет использоваться при вызове метода render(). После его настройки метод renderPartial() будет вызван. Этот метод найдет самую глубокую активную страницу и передаст массив стрниц, которые ведут к этой странице в вспомогательный скрипт вида.

В layout:

$partial = ;
echo $this->navigation()->breadcrumbs()
                        ->setPartial(array('breadcrumbs.phtml', 'default'));

Содержимое application/modules/default/views/breadcrumbs.phtml:


echo implode(', ', array_map(
        create_function('$a', 'return $a->getLabel();'),
        $this->pages));

Выведет:

Products, Foo Server, FAQ

Автор статьи: DuB