Releases: KnpLabs/KnpMenu
2.4.0
2.3.0
New features
- Added Symfony 4 support
- Added a new LazyProvider for menus, building menus from callables or "callable builders"
- Added support for injecting the RequestStack in the RouteVoter
- Added support for iterable in the ChainProvider (allowing lazy-loading of providers in the iterator)
- Added support for menu and renderer providers based on a PSR-11 container
- Added support for registering voters using an iterator
Bug fixes
- Fixed RouteVoter to also match on non-string request arguments like integers as long as both string representations are identical.
- Fixed support for the
depth
ancestor of theknp_menu_ancestor
Twig test
Deprecations
- Deprecated the Silex 1 KnpMenuServiceProvider. Use the
knplabs/knp-menu-silex
package instead. - Injecting a Request in the RouteVoter is deprecated. Inject the RequestStack instead.
- Deprecated
MenuMatcher::addVoter
. Inject voters in the constructor instead
2.2.0
v2.1.1
2.1.0 (2015-09-20)
- Added a new function to twig:
knp_menu_get_breadcrumbs_array
- Added a new filter to twig:
knp_menu_as_string
- Added 2 new tests to twig:
knp_menu_current
,knp_menu_ancestor
- Made the templates compatible with Twig 2
- Add menu and renderer providers supporting any ArrayAccess implementations. The Pimple-based providers (supporting only Pimple 1) are dperecated in favor of these new providers.
2.0.1 (2014-08-01)
- Fixed voter conventions on RouteVoter
2.0.0 (2014-07-18)
- [BC break] Clean code and removed the BC layer
2.0.0 beta 1 (2014-06-19)
- [BC break] Added the new
Integration
namespace and removed theSilex
one. - Added a new Voter based on regular expression:
Knp\Menu\Matcher\Voter\RegexVoter
2.0.0 alpha 2 (2014-05-01)
-
[BC break] Changed the TwigRenderer to accept a menu template only as a string
-
[BC break] Refactored the way of rendering twig templates. Every template should extends
theknp_menu.html.twig
template. -
Introduced extension points in the MenuFactory through
Knp\Menu\Factory\ExtensionInterface
-
[BC break compared to 2.0 alpha 1] The inheritance extension points introduced in alpha1 are
deprecated in favor of extensions and will be removed before the stable release. -
Knp\Menu\Silex\RouterAwareFactory
is deprecated in favor ofKnp\Menu\Silex\RoutingExtension
. -
[BC break] Deprecated the methods
createFromArray
andcreateFromNode
in the MenuFactory and
removed them fromKnp\Menu\FactoryInterface
. UseKnp\Menu\Loader\ArrayLoader
and
Knp\Menu\Loader\NodeLoader
instead. -
[BC break] Deprecated the methods
moveToPosition
,moveToFirstPosition
,moveToLastPosition
,
moveChildToPosition
,callRecursively
,toArray
,getPathAsString
andgetBreadcrumbsArray
in the MenuItem and removed them fromKnp\Menu\ItemInterface
. UseKnp\Menu\Util\MenuManipulator
instead. -
Made the RouterVoter compatible with SensioFrameworkExtraBundle param converters
-
Added the possibility to match routes using a regex on their name in the RouterVoter
-
[BC break compared to 2.0 alpha 1] Refactored the RouterVoter to make it more flexible
The way to pass routes in the item extras has changed.Before:
'extras' => array( 'routes' => array('foo', 'bar'), 'routeParameters' => array('foo' => array('id' => 4)), )
After:
'extras' => array( 'routes' => array( array('route' => 'foo', 'parameters' => array('id' => 4)), 'bar', ) )
The old syntax is kept until the final release, but using it will trigger a E_USER_DEPRECATED error.
2.0.0 alpha1 release
This alpha release does not represent the final feature set of 2.0.
As the development of 2.0 hanged for a while, many people are already using the current state of the code so this alpha release allows them to lock it if they cannot update for the new changes.
Changelog:
- Added protected methods
buildOptions
andconfigureItem
in the MenuFactory as extension point by inheritance - [BC break] Refactored the way to mark items as current
setCurrentUri
,getCurrentUri
andgetCurrentItem
have been removed from the ItemInterface.
Determining the current items is now delegated to a matcher, and the default implementation
uses voters to apply the matching. Getting the current items can be done thanks to the CurrentItemFilterIterator. - [BC break] The signature of the CurrentItemFilterIterator constructor changed to accept the item matcher
- [BC break] Changed the format of the breadcrumb array
Instead of storing the elements with the label as key and the uri as value
the array now stores an array of array elements with 3 keys:label
,uri
anditem
.