xruff/navigation

Nette 扩展 - 为面包屑导航

v2.0 2020-04-18 19:24 UTC

This package is auto-updated.

Last update: 2024-09-19 04:42:27 UTC


README

原始代码 Jan Marek.

需求

该包需要 PHP 7.0 或更高版本

安装

安装 XRuff/Navigation 的最佳方式是使用 Composer

$ composer require xruff/navigation

或在 composer.json 文件中添加包

{
    "require": {
        "xruff/navigation": "dev-master"
    }
}

文档

在 config.neon 中注册配置。

配置有两个可选参数 - breadcrumbsTemplatemenuTemplate.

extensions:
    navigation: XRuff\Components\Navigation\DI\NavigationExtension

# and optional settings for custom templates
navigation:
    breadcrumbsTemplate: %appDir%/components/breadcrumbs.latte

基本呈现器

use Nette;
use XRuff\Components\Navigation\Navigation;

abstract class BasePresenter extends Nette\Application\UI\Presenter
{
	/** @var Navigation @inject */
	public $navigationFactory;

	protected function createComponentNavigation($name) {
		$nav = $this->navigationFactory->create($this);
		$nav->setupHomepage('Homepage', $this->link('Homepage:'));
		return $nav;
	}
}

另一个从我们的 BasePresenter 扩展的呈现器

use XRuff\Components\Navigation\Navigation;

class SomePresenter extends BasePresenter
{
	/** @var XRuff\Components\Navigation\Navigation $nav */
	private $nav;

	protected function startup()
	{
		parent::startup();
		$this->nav = $this['navigation']->add('Company name', $this->link('Company:'));
	}

	public function renderDefault()
	{
		$this->nav = $this->nav->add('Overview', false);
		$this->nav->setCurrent(true);
	}

	public function renderDepartment()
	{
		$this->nav = $this->nav->add('Department name', false);
		$this->nav->setCurrent(true);
	}

	public function renderOther()
	{

		$sec = $this->nav->add('Section', $this->link('Category:', ['id' => 1]));
		$article = $sec->add('Article', $this->link('Article:', ['id' => 1]));
		$this->nav->setCurrentNode($article);
		// or $article->setCurrent(TRUE);
	}
}

template.latte (面包屑模板与 Bootstrap 3 兼容)

    ...
</head>
<body>
    {control navigation:breadcrumbs}
    ...

仓库 https://github.com/XRuff/Navigation.