PHP code example of mimmi20 / mezzio-navigation-laminasviewrenderer
1. Go to this page and download the library: Download mimmi20/mezzio-navigation-laminasviewrenderer library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mimmi20 / mezzio-navigation-laminasviewrenderer example snippets
<!-- ... -->
<body>
<?= $this->navigation('default')->menu()
return [
// ...
'navigation' => [
// Navigation with name default
'default' => [
[
'label' => 'Home',
'route' => 'home',
],
[
'label' => 'Page #1',
'route' => 'page-1',
'pages' => [
[
'label' => 'Child #1',
'route' => 'page-1-child',
],
],
],
[
'label' => 'Page #2',
'route' => 'page-2',
],
],
// Navigation with name special
'special' => [
[
'label' => 'Special',
'route' => 'special',
],
[
'label' => 'Special Page #2',
'route' => 'special-2',
],
],
// Navigation with name sitemap
'sitemap' => [
[
'label' => 'Sitemap',
'route' => 'sitemap',
],
[
'label' => 'Sitemap Page #2',
'route' => 'sitemap-2',
],
],
],
// ...
];
<!-- ... -->
<body>
<?= $this->navigation('Mimmi20\Mezzio\Navigation\Default')->menu()
$this->navigation()->addPage([
'type' => 'uri',
'label' => 'New page',
]);
use Mimmi20\Mezzio\Navigation\Navigation;
/*
* Navigation container
* Each element in the array will be passed to
* Mimmi20\Mezzio\Navigation\Page\(new PageFactory())->factory() when constructing
* the navigation container below.
*/
$pages = [
[
'label' => 'Home',
'title' => 'Go Home',
'module' => 'default',
'controller' => 'index',
'action' => 'index',
'order' => -100, // make sure home is the first page
],
[
'label' => 'Special offer this week only!',
'module' => 'store',
'controller' => 'offer',
'action' => 'amazing',
'visible' => false, // not visible
],
[
'label' => 'Products',
'module' => 'products',
'controller' => 'index',
'action' => 'index',
'pages' => [
[
'label' => 'Foo Server',
'module' => 'products',
'controller' => 'server',
'action' => 'index',
'pages' => [
[
'label' => 'FAQ',
'module' => 'products',
'controller' => 'server',
'action' => 'faq',
'rel' => [
'canonical' => 'http://www.example.com/?page=faq',
'alternate' => [
'module' => 'products',
'controller' => 'server',
'action' => 'faq',
'params' => ['format' => 'xml'],
],
],
],
[
'label' => 'Editions',
'module' => 'products',
'controller' => 'server',
'action' => 'editions',
],
[
'label' => 'System Requirements',
'module' => 'products',
'controller' => 'server',
'action' => '=> [
[
'label' => 'My Account',
'module' => 'community',
'controller' => 'account',
'action' => 'index',
'resource' => 'mvc:community.account', // resource
],
[
'label' => 'Forums',
'uri' => 'http://forums.example.com/',
'class' => 'external', // class,
],
],
],
[
'label' => 'Administration',
'module' => 'admin',
'controller' => 'index',
'action' => 'index',
'resource' => 'mvc:admin', // resource
'pages' => [
[
'label' => 'Write new article',
'module' => 'admin',
'controller' => 'post',
'action' => 'write',
],
],
],
];
// Create container from array
$container = new Navigation();
$container->addPages($pages);
// Store the container in the proxy helper:
$view->plugin('navigation')->setContainer($container);
// ...or simply:
$view->navigation($container);
return [
/* ... */
'router' [
'routes' => [
'archive' => [
'type' => 'Segment',
'options' => [
'route' => '/archive/:year',
'defaults' => [
'module' => 'company',
'controller' => 'news',
'action' => 'archive',
'year' => (int) date('Y') - 1,
],
'constraints' => [
'year' => '\d+',
],
],
],
/* You can have other routes here... */
],
],
/* ... */
];
namespace MyModule;
use Laminas\View\HelperPluginManager as ViewHelperPluginManager;
use Laminas\Permissions\Acl\Acl;
use Laminas\Permissions\Acl\Role\GenericRole;
use Laminas\Permissions\Acl\Resource\GenericResource;
class Module
{
/* ... */
public function getViewHelperConfig()
{
return [
'factories' => [
// This will overwrite the native navigation helper
'navigation' => function(ViewHelperPluginManager $pm) {
// Setup ACL:
$acl = new Acl();
$acl->addRole(new GenericRole('member'));
$acl->addRole(new GenericRole('admin'));
$acl->addResource(new GenericResource('mvc:admin'));
$acl->addResource(new GenericResource('mvc:community.account'));
$acl->allow('member', 'mvc:community.account');
$acl->allow('admin', null);
// Get an instance of the proxy helper
$navigation = $pm->get('Mezzio\Navigation\Helper\Navigation');
// Store ACL and role in the proxy helper:
$navigation->setAcl($acl);
$navigation->setRole('member');
// Return the new navigation helper instance
return $navigation;
}
]
];
}
/* ... */
}
<?= $this->navigation()->breadcrumbs();
<?= $this->navigation()->breadcrumbs()->render();
<?= $this->navigation()->breadcrumbs()->setIndent(8)
<?= $this->navigation()->breadcrumbs()
->setLinkLast(true) // link last page
->setMaxDepth(1) // stop at level 1
->setSeparator(' ▶' . PHP_EOL); // cool separator with newline
<?= $this->navigation()->breadcrumbs()->setMinDepth(10)
echo $this->navigation()->breadcrumbs()
->setPartial('my-module/partials/breadcrumbs');
<?= implode(', ', array_map(function ($a) {
return $a->getLabel();
}, $this->pages));
use Laminas\Config\Config;
use Mimmi20\Mezzio\Navigation\Navigation;
use Mimmi20\Mezzio\Navigation\Page\PageInterface;
$container = new Navigation([
[
'label' => 'Relations using strings',
'rel' => [
'alternate' => 'http://www.example.org/',
],
'rev' => [
'alternate' => 'http://www.example.net/',
],
],
[
'label' => 'Relations using arrays',
'rel' => [
'alternate' => [
'label' => 'Example.org',
'uri' => 'http://www.example.org/',
],
],
],
[
'label' => 'Relations using configs',
'rel' => [
'alternate' => new Config([
'label' => 'Example.org',
'uri' => 'http://www.example.org/',
]),
],
],
[
'label' => 'Relations using pages instance',
'rel' => [
'alternate' => (new PageFactory())->factory([
'label' => 'Example.org',
'uri' => 'http://www.example.org/',
]),
],
],
]);
<?= $this->navigation()->links()
use Mimmi20\Mezzio\Navigation\Helper\Navigation\LinksInterface;
$links = $this->navigation()->links();
$links->setRenderFlag(LinksInterface::RENDER_START | LinksInterface::RENDER_NEXT | LinksInterface::RENDER_PREV);
echo $links;
$links->setRenderFlag(LinksInterface::RENDER_ALL ^ LinksInterface::RENDER_CUSTOM);
echo $links;
$links->setRenderFlag(Links::RENDER_ALL ^ Links::RENDER_CHAPTER);
echo $links;
<?= $this->navigation()->menu()->render()
<?= $this->navigation()->menu()
// render only the 'Community' menu
$community = $this->navigation()->findOneByLabel('Community');
$options = [
'indent' => 16,
'ulClass' => 'community'
];
echo $this->navigation()
->menu()
->renderMenu($community, $options);
[
'ulClass' => $ulClass,
'indent' => $indent,
'minDepth' => null,
'maxDepth' => null,
'onlyActiveBranch' => true,
'renderParents' => false,
]
<?= $this->navigation()
->menu()
->renderSubMenu(null, 'sidebar', 4)
<?= $this->navigation()
->menu()
->setMaxDepth(1)
<?= $this->navigation()
->menu()
->setMinDepth(1)
<?= $this->navigation()
->menu()
->setOnlyActiveBranch(true)
<?= $this->navigation()
->menu()
->setOnlyActiveBranch(true)
->setMinDepth(1)
<?= $this->navigation()
->menu()
->setOnlyActiveBranch(true)
->setMaxDepth(1)
<?= $this->navigation()
->menu()
->setOnlyActiveBranch(true)
->setRenderParents(false)
->setMaxDepth(1)
$this->navigation()->menu()->setPartial('my-module/partials/menu');
echo $this->navigation()->menu()->render();
foreach ($this->container as $page) {
echo $this->navigation()->menu()->htmlify($page) . PHP_EOL;
}
// Set partial
$this->navigation()->menu()->setPartial('my-module/partials/menu');
// Output menu
echo $this->navigation()->menu()->renderPartialWithParams(
[
'headline' => 'Links',
]
);
<h1><?= $headline
// Set options
$this->navigation()->menu()
->setUlClass('my-nav')
->setPartial('my-module/partials/menu');
// Output menu
echo $this->navigation()->menu()->render();
<div class"<?= $this->navigation()->menu()->getUlClass()
foreach ($this->container as $page) {
if ($this->navigation()->accept($page)) {
echo $this->navigation()->menu()->htmlify($page) . PHP_EOL;
}
}
// In a view script or layout:
// format output
$this->navigation()
->sitemap()
->setFormatOutput(true); // default is false
// Other possible methods:
// ->setUseXmlDeclaration(false); // default is true
// ->setServerUrl('http://my.otherhost.com'); // default is to detect automatically
// print sitemap
echo $this->navigation()->sitemap();
echo $this->navigation()->sitemap()
->setFormatOutput(true)
->setRole();
echo $this->navigation()->sitemap()
->setFormatOutput(true)
->setMaxDepth(1);