'da "geçerli" sınıfı "aktif" olarak nasıl değiştirileceğini merak ettim, "geçerli" sınıfı "etkin" olarak değiştirmenin en iyi yolu nedir? Öyleyse Bootstrap bununla doğru şekilde çalışacak? Neyse iyi KNPMenüBundle
yapıyor ... Ben kopyalama ve knp_menu_html.twig geçersiz kılma düşündü ama onun değil en iyi yolu düşünüyorsun?
8
A
cevap
17
Sen bunu böyle geçirebilirsiniz:
{{ knp_menu_render('AcmeDemoBundle:Builder:mainMenu', {'currentClass': 'active'}) }}
16
tüm uygulamanızda varsayılan seçenekleri uygulamak için, böyle knp_menu.renderer.twig.options
parametreyi ayarlayabilirsiniz: Knp\Menu\Renderer\TwigRenderer
ait
// app/config/services.yml
parameters:
knp_menu.renderer.twig.options:
currentClass: active
Standart seçenekleri şunlardır:
$this->defaultOptions = array_merge(array(
'depth' => null,
'matchingDepth' => null,
'currentAsLink' => true,
'currentClass' => 'current',
'ancestorClass' => 'current_ancestor',
'firstClass' => 'first',
'lastClass' => 'last',
'template' => $template,
'compressed' => false,
'allow_safe_labels' => false,
'clear_matcher' => true,
'leaf_class' => null,
'branch_class' => null,
), $defaultOptions);
Bu seçenekleri MenuBuilder sınıfının içinde ayarlamak mümkün müdür? – Trix
Doğrudan değil. Menü yapıcınızdaki "knp_menu.renderer.twig" hizmetini (yukarıdaki "Knp \ Menu \ Renderer \ TwigRenderer" sınıfını) enjekte ettiyseniz, varsayılan seçenekler için hiçbir mutators yoktur. Sonunda, "knp_menu.renderer.twig.class" parametresiyle renderer sınıfını geçersiz kılarak bazı mutators kendiniz uygulayabilirsiniz. –