рдпрд╣ рдПрдХ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕реВрдЪреА рдкрд░ рдПрдХ рдореЗрдиреВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рд╕рдХреНрд░рд┐рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ
current active
рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ:
<li class="current active"> <a href="#link">Current link</a> </li>
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рджреЛ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд╡рд░реНрддрдорд╛рди рд▓рд┐рдВрдХ (рд╡рд░реНрддрдорд╛рди) - рдореЗрдиреВ рдЖрдЗрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИ
- рд╕рдХреНрд░рд┐рдп рд▓рд┐рдВрдХ - рд╕рдХреНрд░рд┐рдп рдореЗрдиреВ рдЖрдЗрдЯрдо рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИ
рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдк рд╕рд┐рдореНрдлрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдкрдХреЗ рдкрд╛рд╕
KNPMenuBundle
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рд╕рдХреНрд░рд┐рдп рдЖрдЗрдЯрдо рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ - рддреЛ рдпрд╣ рдЬрдЯрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг HTML рдореЗрдиреВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдХрдИ рд╕реНрддрд░ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ
KNPMenuBundle
рдЬреИрд╕реЗ OOP рдореЗрдиреВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ ActiveMenuItemBundle рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ , рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ:
рд╕реНрдерд╛рдкрдирд╛
ActiveMenuItemBundle
рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд┐рдореНрдлрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╣реИ :
{ "require": { "bw/active-menu-item-bundle": "1.1.*@dev" } }
рдФрд░ рдлрд┐рд░ рдмрдВрдбрд▓ рдХреЛ
app/AppKernel.php
рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:
public function registerBundles() { $bundles = array( // other bundles... new BW\ActiveMenuItemBundle\BWActiveMenuItemBundle(), );
рдХреЗ рдЙрдкрдпреЛрдЧ
рдЕрдм рдЖрдкрдХреЗ Twig рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдХрдИ рдирдП рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреЛ рд╕рдХреНрд░рд┐рдп рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдореЗрдиреВ рдЖрдЗрдЯрдо рдорд╛рд░реНрдЧ рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ,
is_active
рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг 1:
<li class="{{ 'route_name'|is_active }}"> <a href="{{ path('route_name') }}">Current link</a> </li>
рдпрджрд┐ рдорд╛рд░реНрдЧ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ
current active
рд▓реМрдЯрд╛рдПрдЧрд╛ред
рдПрдХ рдмрд╣реБрд╕реНрддрд░реАрдп рдореЗрдиреВ рдХреЗ рдореВрд▓ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЗ рдХреЗ
is_active
рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ,
is_active
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЗрд╕рдореЗрдВ рдмрд╛рд▓ рдорд╛рд░реНрдЧреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛, рдФрд░ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рд░реВрдЯ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг 2:
<li class="{{ is_active(['child_route_1', 'child_route_2'], 'parent_route') }}"> <a href="{{ path('parent_route') }}">Parent link</a> <ul> <li class="{{ 'child_route_1'|is_active }}"> <a href="{{ path('child_route_1') }}">Child link</a> </li> <li class="{{ 'child_route_2'|is_active }}"> <a href="{{ path('child_route_2') }}">Current link</a> </li> </ul> </li>
рдпрджрд┐ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ
child_route_2
Current link
child_route_2
, рддреЛ
current active
рдХрдХреНрд╖рд╛рдПрдВ рдЙрд╕реЗ рд╕реМрдВрдкреА рдЬрд╛рдПрдВрдЧреА, рдФрд░ рдХреЗрд╡рд▓
active
рд╡рд░реНрдЧ рдХреЛ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдкреЗрд░реЗрдВрдЯ_рд░реВрдЯреЗ
parent_route
рд╕рд╛рде рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдХреЛ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрд░реЛрдз URI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
is_active_uri
рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░
is_active_uri
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз URI рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рд╕рд┐рдореНрдлрдиреА рдмреЙрдХреНрд╕ рд╕реЗ рджрд┐рдП рдЧрдП
path
рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 3:
<li class="{{ path('route_name')|is_active_uri }}"> <a href="{{ path('route_name') }}">Current link</a> </li>
рдбреЗрдореЛ
рдбреЗрдореЛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЗрд╡ рдореЛрдб рдХреЗ рд▓рд┐рдП
app/config/routing_dev.yml
рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
bw_active_menu_item: resource: "@BWActiveMenuItemBundle/Resources/config/routing.yml" prefix: /bw/demo/active-menu-item
рдлрд┐рд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
php app/console server:run
рд╢реБрд░реВ
php app/console server:run
рдХреЛ рджреЗрд╡ рдореЛрдб рдореЗрдВ
php app/console server:run
рдФрд░ рдкрддреЗ рдкрд░ рдЬрд╛рдПрдВ
localhost:8000/bw/demo/active-menu-item/index
localhost:8000/bw/demo/active-menu-item/index
ред рдпрд╣рд╛рдБ Twig рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдореЛ рдХреЛрдб рд╣реИ ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдореЗрд░рд╛ рдмрдВрдбрд▓ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдХрд░рдг рдЙрдкрдпреЛрдЧреА рдирд┐рдХрд▓рд╛, рд╕рд░рд▓ рдФрд░ рдЫреЛрдЯреЗ HTML рдореЗрдиреВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдмрдбрд╝реЗ рдФрд░ рдЬрдЯрд┐рд▓ рдореЗрдиреВ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕рд╛рджрдЧреА рдФрд░ рдЧрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ - рдпрд╣ рдЕрдЪреНрдЫрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рд╣реИ (рдпрд╣ рдереЛрдбрд╝рд╛ рд╕реЛрдЪрд╛ рдЬрд╛рдПрдЧрд╛)ред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдлрд┐рд▓реНрдЯрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рди рджрд┐рдЦреЗрдВред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреЗ рдХрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗ!
рдкреАрдПрд╕ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рддреАрд░ рдХреЛ рджрдмрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдорд╛рдЗрдирд╕ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреНрдпреЛрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рдиреА рдЙрдард╛рдПрдВред