PHP code example of everlutionsk / navigation-bundle
1. Go to this page and download the library: Download everlutionsk/navigation-bundle 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/ */
everlutionsk / navigation-bundle example snippets
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Everlution\NavigationBundle\EverlutionNavigationBundle(),
);
// ...
}
// ...
}
class SampleItem implements Everlution\Navigation\Item\ItemInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.sample.label');
}
}
class SampleNavigation extends Everlution\Navigation\MutableContainer
{
public function __construct()
{
array_map(
[$this, 'add'],
[
new \SampleItem(),
// you can specify multiple items here
]
);
}
}
class ProductsItem implements Everlution\Navigation\Item\ItemInterface, Everlution\Navigation\Item\RegistrableItemInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('products');
}
public function getRegisteredContainerNames(): array
{
return [
\DefaultNavigation::class,
'non-existent-alias-which-will-be-ignored',
];
}
}
class ItemWithRoute implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.item_with_route.label');
}
public function getRoute(): string
{
return 'sample_route';
}
public function getParameters(): array
{
// if route does not expect any parameters just provide empty array
// or use Everlution\NavigationBundle\Bridge\Item\EmptyRouteParametersTrait
return [];
}
}
class EditUserItem implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
/** @var UserIdProvider */
private $idProvider;
public function __construct(UserIdProvider $idProvider)
{
$this->idProvider = $idProvider;
}
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.edit_user.label');
}
public function getRoute(): string
{
return 'edit_user_route';
}
public function getParameters(): array
{
return [
'id' => $this->idProvider->getId(),
];
}
}
class ItemUsingRequestAttributes implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface
{
use Everlution\Navigation\Item\ShownItemTrait, Everlution\NavigationBundle\Bridge\Item\RequestAttributesTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.request_attributes.label');
}
public function getRoute(): string
{
return 'request_attributes';
}
public function getParameters(): array
{
return [
'id' => $this->requestAttributes->get('id'),
];
}
}
class CopyRequestAttributes implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface
{
use Everlution\Navigation\Item\ShownItemTrait, Everlution\NavigationBundle\Bridge\Item\RequestAttributesTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.copy_request_attributes.label');
}
public function getRoute(): string
{
return 'copy_request_attributes';
}
public function getParameters(): array
{
// you can also merge parameters from request with your own parameters if you wish
return $this->copyRequestAttributes(['id', '_token']);
}
}
class MatchedItem implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface, Everlution\Navigation\Item\MatchableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.matched.label');
}
public function getRoute(): string
{
return 'edit_matched_route';
}
public function getParameters(): array
{
return [];
}
/**
* @return \Everlution\Navigation\Match\MatchInterface[]
*/
public function getMatches(): array
{
return [
new \Everlution\Navigation\Match\Voter\ExactMatch('edit_matched_route'),
new \Everlution\Navigation\Match\Voter\PrefixMatch('/matched'),
new \Everlution\Navigation\Match\Voter\RegexMatch('.php$', 'i'),
];
}
}
class ItemFilteredByRole implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface, Everlution\Navigation\Item\HasSupportedRolesInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.item_filtered_by_role.label');
}
public function getRoute(): string
{
return 'edit_filtered_by_role_route';
}
public function getParameters(): array
{
return [];
}
public function getSupportedRoles(): array
{
return [
'PUBLIC_ACCESS',
];
}
}
class FilteredNavigation extends \Everlution\Navigation\MutableContainer implements Everlution\Navigation\FilteredContainerInterface
{
/** @var \Everlution\Navigation\Filter\RolesProviderInterface */
private $roleProvider;
public function __construct(\Everlution\Navigation\Filter\RolesProviderInterface $rolesProvider)
{
$this->roleProvider = $rolesProvider;
array_map(
[$this, 'add'],
[
new \ItemFilteredByRole(),
// you can specify multiple items here
]
);
}
public function getFilters(): array
{
return [
new \Everlution\Navigation\Filter\FilterByRole($this->roleProvider),
];
}
}
// ...
public function getFilters(): array
{
return [
new Everlution\Navigation\Filter\RemoveNotSupportedRoleFilter(),
new \Everlution\Navigation\Filter\FilterByRole($this->roleProvider),
];
}
// ...
class FirstItem implements Everlution\Navigation\Item\ItemInterface, Everlution\Navigation\Item\SortableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('first');
}
public function getOrder(): int
{
return -100;
}
}
class LastItem implements Everlution\Navigation\Item\ItemInterface, Everlution\Navigation\Item\SortableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('last');
}
public function getOrder(): int
{
return 100;
}
}
class MiddleItem implements Everlution\Navigation\Item\ItemInterface, Everlution\Navigation\Item\SortableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('middle');
}
public function getOrder(): int
{
return 0;
}
}
class ItemWithParent implements Everlution\Navigation\Item\ItemInterface, Everlution\NavigationBundle\Bridge\Item\RoutableInterface, Everlution\Navigation\Item\NestableInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\Navigation\Item\ItemLabel('navigation.item_with_parent.label');
}
public function getRoute(): string
{
return 'edit_item_with_parent_route';
}
public function getParameters(): array
{
return [];
}
public function getParent(): string
{
return \SampleItem::class;
}
}
class TranslatableLabelItem implements Everlution\Navigation\Item\ItemInterface
{
use Everlution\Navigation\Item\ShownItemTrait;
/** @var \ParameterProvider */
private $parameterProvider;
public function __construct(\ParameterProvider $provider)
{
$this->parameterProvider = $provider;
}
public function getLabel(): \Everlution\Navigation\Item\ItemLabelInterface
{
return new \Everlution\NavigationBundle\Bridge\Item\TranslatableItemLabel(
'navigation.translatable_label_item.label',
['%first_parameter%' => $this->parameterProvider->getParameter()]
);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.