I utworzeniu niestandardowej strony SonataDodaj niestandardową stronę Sonata trasę do paska nawigacyjnego
Proste trasy
medapp_adminStreamCommands:
path: /admin/stream
defaults: { _controller: MedAppBundle:VideoChat/VideoChat:adminStreamCommands }
Controller, która zwraca basenie Admin
public function adminStreamCommandsAction(Request $request)
{
return $this->render('@MedApp/AdminSonata/Stream/stream_commands.html.twig', array(
'admin_pool' => $this->get('sonata.admin.pool')));
}
zwykłym widoku szablon
{% extends '@MedApp/AdminSonata/standard_layout.html.twig' %}
{% block content %}
foobar
{% endblock content
To działa, ja c dostęp do niego na mojej stronie z /admin/foo
i otrzymuję stronę z szablonem administratora Sonaty z moją "foobarową" treścią.
Moje pytanie brzmi: jak mogę dodać tę trasę do lewego i górnego paska nawigacyjnego bez konieczności modyfikacji domyślnego szablonu? to dlatego, że po lewej stronie menu jest renderowany przez menu KNP:
{% block side_bar_nav %}
{% if app.user and is_granted('ROLE_SONATA_ADMIN') %}
{{ knp_menu_render('sonata_admin_sidebar', {template: admin_pool.getTemplate('knp_menu_template')}) }}
{% endif %}
{% endblock side_bar_nav %}
I jakoś trzeba dodać moją nową stronę, która zostanie wygenerowana przez tego menu.
Normalnie strona jest dodawana za pośrednictwem usługi, ale są one zbudowane na górze jednostki:
servicename:
class: Bundle\Class
arguments: [~, Bundle\Entity\Entityname, ~]
tags:
- { name: sonata.admin, manager_type: orm, group: admin, label: CustomName}
Moja strona nie korzysta podmiot, choć tylko statyczny lub treści, które nie jest zależne na podmiocie.
Wiem już, że mogę zmodyfikować bloki, które generują menu, ale myślałem, że najlepszym sposobem byłoby dodanie mojej klasy jako usługi oznaczonej jako sonata.admin, która nie ma ormiarem manager_type, w inne słowa, nie jest Podmiotem. Jak to zrobić?
Zrobiłem już to. Musiałbym jednak wygenerować menu w oparciu o trasy puli administracyjnej i własne niestandardowe strony. Myślałem, że sonata ma sposób robienia tego poprzez plik yml lub jakiś inny łatwiejszy sposób, niż zmuszenie mnie do stworzenia własnego menu. Wyobrażam sobie, że nie jestem pierwszym, który chce podobnej funkcjonalności, ale nie mogłem znaleźć żadnego przykładu, który to robi. –
Nie wiem, czy istnieje inny sposób niż tworzenie własnego menu, można również ustawić własne linki, sprawdzając aktualną trasę na swojej stronie i dodając własny html, jest to brudny sposób, ale działa. – HypeR
Rzeczywiście. Innym sposobem byłoby ustawienie klasy Admin dla Modelu, który nie jest Podmiotem powiązanym z ORM. Widziałem dyskusję na ten temat, ale znowu nie mogłem znaleźć żadnego przykładu, jak to zrobić. To zadziałałoby na pewno, ponieważ mogę dodawać trasy do rutynowej kolekcji bieżącego Modelu i implementować niestandardowe akcje. Niestety jest to coś, czego nie mogłem znaleźć ani o ile jest to możliwe. –