SpiffyNavigation is a navigation module for ZF2 intended to be a replacement for Zend\Navigation when ZF3 is able to break BC.
- PHP 5.3 or higher
- Zend Framework 2
Installation of SpiffyNavigation uses composer. For composer documentation, please refer to getcomposer.org.
-
cd my/project/directory
-
create a
composer.json
file with following contents:{ "require": { "spiffy/spiffy-navigation": "dev-master" } }
-
install composer via
curl -s http://getcomposer.org/installer | php
(on windows, download http://getcomposer.org/installer and execute it with PHP) -
run
php composer.phar install
-
open
my/project/directory/configs/application.config.php
and add the following key to yourmodules
:'SpiffyNavigation',
Providers let you create your navigation containers from various sources. The following providers are included out of the box:
- array: builds a container from an array.
- config: builds a container from a file using Zend\Config.
- json: builds a container from a json string.
Creating navigation containers is done via the module configuration using the spiffy_navigation
key. The containers
array can take two types of values: a string and an array. If you pass a string the container will be created from a
provider matching the name if it exists, pulled from the service manager or instantiated directly. If you pass an array
the container is built using the ContainerFactory::create() method.
<?php
// module.config.php
return array(
'spiffy_navigation' => array(
'containers' => array(
'default' => array(
array(
'options' => array(
'uri' => 'http://www.github.com',
),
'attributes' => array(
'class' => 'foo',
'target' => '_blank',
'name' => 'github'
)
),
array(
'options' => array(
'label' => 'Home',
'route' => 'home',
),
'attributes' => array(
'name' => 'Home'
)
'pages' => array(
// ...
)
)
),
'serviceManager' => 'My\ServiceManager\Alias',
'class' => 'My\Class\Instantiation',
'json_provider' => 'mynav',
),
'providers' => array(
'mynav' => array(
'type' => 'json',
'options' => array(
'json' => file_get_contents(__DIR__ . '/navigation/mynav.json')
)
)
)
)
);
- label: The label for the element in view helpers.
- anchor: An optional anchor to append to the uri.
- route: The route to use for assembling the uri.
- uri: The direct uri to use (use instead of route).
- params: Optional params to include during route assembly.
- query_params: Optional params to include in the query string during assembly.
- role: required The role to use to determine if access is granted.
- permission: required The permission to use to determine if access is granted.
- assertion: The assertion to use to determine if access is granted.
Once you have created a container using a view helper is as simple as putting:
<?php
echo $this->helperName('containerName');
<?php
// in view script
echo $this->navigationMenu('containerName');
// or
echo $this->navigationMenu()->renderMenu('containerName', $options);
// or
echo $this->navigationMenu()->renderPartial('containerName', 'partialName');
- ulClass: The class to use when generating the ul.
- minDepth: Minimum render depth.
- maxDepth: Maximum render depth.
- activeClass: Active class to use for the active element.