ZF2 Breadcrumbs Helper - Как отобразить его в виде неупорядоченного списка?

Я новичок в Zend Framework2 и прошу совета в следующей ситуации:

Я использую ZF2 Breadcrumbs Helper для создания хлебных крошек в моем проекте и этот код:

 //breadcrumbs.phtml 

 echo $this->navigation('Navigation')
        ->breadcrumbs()
        ->setLinkLast(false)               // link last page
        ->setMaxDepth(7)                   // stop at level 7
        ->setMinDepth(0)                   // start at level 0
        ->setSeparator(' »' . PHP_EOL);    // separator with newline 

при рендеринге выглядит так:

Главная » Lorem Ipsum1 » Lorem Ipsum2 » Текущая крошка

Изучение исходного кода:

<div id="breadcrumbs">
    <a href="/">Home</a>
    »
    <a href="/">Lorem Ipsum1</a>
    »
    <a href="/">Lorem Ipsum2</a>
    » Current Crumb
</div>

Итак, мой вопрос: используя Breadcrumb Helper, как я могу получить следующий исходный код, чтобы иметь возможность стилизовать Breadcrumbs так, как я хочу?

<div id="breadcrumbs">
    <ul id="breadcrumbs">
       <li><a href="">Home</a></li>
       <li><a href="">Lorem Ipsum1</a></li>
       <li><a href="">Lorem Ipsum2</a></li>
       <li><a href="" class="current">Current Crumb</a></li>
    </ul>
</div>

person devanerd    schedule 15.11.2012    source источник


Ответы (5)


Вы можете использовать хелпер представления, чтобы установить партиал для использования:

<?php $partial = array('application/navigation/breadcrumbs.phtml', 'default') ?>
<?php $this->navigation('navigation')->breadcrumbs()->setPartial($partial) ?>
<?php echo $this->navigation('navigation')->breadcrumbs()->render() ?>

И тогда ваш частичный будет примерно таким (application/navigation/breadcrumbs.phtml):

<?php $container = $this->navigation()->breadcrumbs()  ?>
<?php /* @var $container \Zend\View\Helper\Navigation\Breadcrumbs */ ?>
<?php $navigation = $container->getContainer() ?>
<?php /* @var $navigation \Zend\Navigation\Navigation */ ?>

<ul class="breadcrumb">
    <li><a href="<?php echo $this->url('soemroute') ?>">Home</a> <span class="divider">/</span></li>
    <?php foreach($this->pages as $page): ?>
        <?php /* @var $page \Zend\Navigation\Page\Mvc */ ?>
        <?php if( ! $page->isActive()): ?>
            <li>
                <a href="<?php echo $page->getHref() ?>"><?php echo $page->getLabel() ?></a> 
                <span class="divider">/</span>
            </li>
        <?php else: ?>
            <li class="active">
                <?php if($container->getLinkLast()): ?><a href="<?php echo $page->getHref() ?>"><?php endif ?>
                <?php echo $page->getLabel() ?>
                <?php if($container->getLinkLast()): ?></a><?php endif ?>
            </li>
        <?php endif ?>
    <?php endforeach ?>
</ul>
person Andrew    schedule 08.02.2013

Я не уверен, поможет ли это вам, но прогресс должен быть примерно таким: Здесь< /а>

Дополнительная информация: документация по zf2 Рендеринг хлебных крошек с использованием скрипта частичного просмотра

person Emrah Mehmedov    schedule 15.11.2012
comment
Я использую ZF2 Navigation Helper для создания хлебных крошек. Пример, который вы разместили, относится к тому, как были созданы панировочные сухари с предыдущей версией ZF, верно? - person devanerd; 16.11.2012
comment
ссылка на stackoverflow может быть, но документация о zf2. - person Emrah Mehmedov; 17.11.2012

Я просто создаю хлебную крошку Twitter Bootstrap на своем ZF2.

хлебные крошки.phtml

<?php
if (count($this->pages) > 0) :
?>
<ol class="breadcrumb">
<?php
for ($i = 0, $iend = count($this->pages); $i < $iend; $i++) :
    $a=$this->pages[$i];
    $label = $this->translate($a->getLabel());
?>
    <li <?php if ($i + 1 == $iend) : ?> class="active" <?php endif ?> >
        <?php if ($i + 1 != $iend) : ?>
            <a href="<?php echo $a->getHref(); ?>"><?php echo $label ?></a>
        <?php else : ?>
            <?php echo $label ?>
        <?php endif ?>
    </li>
<?php endfor ?>
</ol>
<?php endif ?>

И распечатать на моем шаблоне

<?php echo $this->navigation()->breadcrumbs('Navigation')->setPartial('partial/breadcrumb.phtml'); ?>
person LuisComS    schedule 12.11.2014

Я знаю, что это старый вопрос, но если кому-то нужно простое решение для рендеринга меню ul-li, вы можете использовать этот код в своем breadcrumbs.phtml:

<?php $breadcrumbs = $this->navigation()->breadcrumbs()->setMinDepth(0); ?>
<?php $items = array_filter(explode($breadcrumbs->getSeparator(), $breadcrumbs->render())); ?>
<?php if ($items) : ?>
    <ul class="breadcrumbs">
        <?php foreach ($items as $item) : ?>
            <li><?= $item ?></li>
        <?php endforeach; ?>
    </ul>
<?php endif; ?>
person Serhii Popov    schedule 10.08.2018

Для ZF3

файл: partial/breadcrumbs.phtml

<?php
/**
 * Zend breadcrumb partial
 *
 * @date 12.09.2018 16:47
 * @var $this \Zend\View\Renderer\PhpRenderer
 * @var $page \Zend\Navigation\Page\AbstractPage
 */

if (0 == count($this->pages)) {
    return;
}
?>
<ul class="breadcrumb">
    <?php foreach ($this->pages as $page) :?>
        <?php if ($page->isActive()): ?>
            <li class="active"><?= $page->getLabel() ?></li>
        <?php else : ?>
            <li><a href="<?= $page->getHref()?>"><?= $page->getLabel() ?></a></li>
        <?php endif; ?>
    <?php endforeach; ?>
</ul>

файл: ./config/autoload/navigation.global.php

<?php
return [
    'navigation' => [
        'breadcrumb' => [
            [
                'label' => 'Home',
                'route' => 'home',
                'pages' => [
                    [
                        'label' => 'Page - 1',
                        'route' => 'doc',
                        'pages' => [
                            [
                                'label' => 'Sub page 2',
                                'route' => 'doc/page',
                                'params' => ['page' => 'control-panel'],
                            ],
                        ]
                    ],
                ]
            ],
        ],
    ],
];

На взгляд

<?= $this->navigation('Zend\Navigation\Breadcrumb')
         ->breadcrumbs()
         ->setPartial('partial/breadcrumbs.phtml')
?>
person Farkhod Daniyarov    schedule 12.09.2018