1 | <?php |
||
2 | |||
3 | namespace Knp\Menu\Silex; |
||
4 | |||
5 | use Knp\Menu\Integration\Symfony\RoutingExtension; |
||
6 | use Knp\Menu\Matcher\Voter\RouteVoter; |
||
7 | use Silex\Application; |
||
8 | use Silex\ServiceProviderInterface; |
||
9 | use Knp\Menu\Matcher\Matcher; |
||
10 | use Knp\Menu\MenuFactory; |
||
11 | use Knp\Menu\Renderer\ListRenderer; |
||
12 | use Knp\Menu\Renderer\TwigRenderer; |
||
13 | use Knp\Menu\Provider\ArrayAccessProvider as PimpleMenuProvider; |
||
14 | use Knp\Menu\Renderer\ArrayAccessProvider as PimpleRendererProvider; |
||
15 | use Knp\Menu\Twig\Helper; |
||
16 | use Knp\Menu\Twig\MenuExtension; |
||
17 | use Knp\Menu\Util\MenuManipulator; |
||
18 | |||
19 | class MenuServiceProvider implements ServiceProviderInterface |
||
20 | { |
||
21 | public function register(Application $app) |
||
22 | { |
||
23 | $app['knp_menu.factory'] = $app->share(function() use ($app) { |
||
24 | $factory = new MenuFactory(); |
||
25 | |||
26 | if (isset($app['url_generator'])) { |
||
27 | $factory->addExtension(new RoutingExtension($app['url_generator'])); |
||
28 | } |
||
29 | |||
30 | return $factory; |
||
31 | }); |
||
32 | |||
33 | $app['knp_menu.matcher'] = $app->share(function() use ($app) { |
||
34 | $matcher = new Matcher(); |
||
35 | |||
36 | if (isset($app['knp_menu.voter.router'])) { |
||
37 | $matcher->addVoter($app['knp_menu.voter.router']); |
||
0 ignored issues
–
show
|
|||
38 | } |
||
39 | |||
40 | if (isset($app['knp_menu.matcher.configure'])) { |
||
41 | @trigger_error('Defining a "knp_menu.matcher.configure" to configure the matcher is deprecated since 1.1 and won\'t be supported in 2.0. Extend the "knp_menu.matcher" service instead.', E_USER_DEPRECATED); |
||
42 | $app['knp_menu.matcher.configure']($matcher); |
||
43 | } |
||
44 | |||
45 | return $matcher; |
||
46 | }); |
||
47 | |||
48 | $app['knp_menu.voter.router'] = $app->share(function() use ($app) { |
||
49 | return new RouteVoter($app['request_stack']); |
||
50 | }); |
||
51 | |||
52 | $app['knp_menu.renderer.list'] = $app->share(function() use ($app) { |
||
53 | return new ListRenderer($app['knp_menu.matcher'], array(), $app['charset']); |
||
54 | }); |
||
55 | |||
56 | $app['knp_menu.menu_provider'] = $app->share(function() use ($app) { |
||
57 | return new PimpleMenuProvider($app, $app['knp_menu.menus']); |
||
58 | }); |
||
59 | |||
60 | if (!isset($app['knp_menu.menus'])) { |
||
61 | $app['knp_menu.menus'] = array(); |
||
62 | } |
||
63 | |||
64 | $app['knp_menu.renderer_provider'] = $app->share(function() use ($app) { |
||
65 | $app['knp_menu.renderers'] = array_merge( |
||
66 | array('list' => 'knp_menu.renderer.list'), |
||
67 | isset($app['knp_menu.renderer.twig']) ? array('twig' => 'knp_menu.renderer.twig') : array(), |
||
68 | isset($app['knp_menu.renderers']) ? $app['knp_menu.renderers'] : array() |
||
69 | ); |
||
70 | |||
71 | return new PimpleRendererProvider($app, $app['knp_menu.default_renderer'], $app['knp_menu.renderers']); |
||
72 | }); |
||
73 | |||
74 | $app['knp_menu.menu_manipulator'] = $app->share(function() use ($app) { |
||
0 ignored issues
–
show
|
|||
75 | return new MenuManipulator(); |
||
76 | }); |
||
77 | |||
78 | if (!isset($app['knp_menu.default_renderer'])) { |
||
79 | $app['knp_menu.default_renderer'] = 'list'; |
||
80 | } |
||
81 | |||
82 | $app['knp_menu.helper'] = $app->share(function() use ($app) { |
||
83 | return new Helper($app['knp_menu.renderer_provider'], $app['knp_menu.menu_provider'], $app['knp_menu.menu_manipulator'], $app['knp_menu.matcher']); |
||
84 | }); |
||
85 | |||
86 | if (isset($app['twig'])) { |
||
87 | $app['knp_menu.twig_extension'] = $app->share(function() use ($app) { |
||
88 | return new MenuExtension($app['knp_menu.helper'], $app['knp_menu.matcher'], $app['knp_menu.menu_manipulator']); |
||
89 | }); |
||
90 | |||
91 | $app['knp_menu.renderer.twig'] = $app->share(function() use ($app) { |
||
92 | return new TwigRenderer($app['twig'], $app['knp_menu.template'], $app['knp_menu.matcher']); |
||
93 | }); |
||
94 | |||
95 | if (!isset($app['knp_menu.template'])) { |
||
96 | $app['knp_menu.template'] = 'knp_menu.html.twig'; |
||
97 | } |
||
98 | |||
99 | $app['twig'] = $app->share($app->extend('twig', function(\Twig_Environment $twig) use ($app) { |
||
100 | $twig->addExtension($app['knp_menu.twig_extension']); |
||
101 | |||
102 | return $twig; |
||
103 | })); |
||
104 | |||
105 | $app['twig.loader.filesystem'] = $app->share($app->extend('twig.loader.filesystem', function(\Twig_Loader_Filesystem $loader) { |
||
106 | $ref = new \ReflectionClass('Knp\Menu\ItemInterface'); |
||
107 | |||
108 | $loader->addPath(dirname($ref->getFileName()).'/Resources/views'); |
||
109 | |||
110 | return $loader; |
||
111 | })); |
||
112 | } |
||
113 | } |
||
114 | |||
115 | public function boot(Application $app) {} |
||
116 | } |
||
117 |
This function has been deprecated. The supplier of the function has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.