2014-06-09 8 views
8

'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?

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); 
+0

Bu seçenekleri MenuBuilder sınıfının içinde ayarlamak mümkün müdür? – Trix

+0

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. –