2015-11-17 13 views
9

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

Odpowiedz

1

Nie sądzę, że to możliwe, trzeba stworzyć nowy układ, skopiować sonata admin layout i dostosować go do własnych potrzeb.

Możesz zmienić używany układ, zmieniając konfigurację yml dla sonata_admin (szablony -> układ) lub extending the SonataAdmin bundle i tworząc własny layout.html.twig.

+0

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

+0

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

+0

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

2

Powinieneś nadpisać standard_layout i zmodyfikować zawartość bloku side_bar_nav. To jest prosty i szybki sposób. Lub możesz zagłębić się w kod sonaty, aby znaleźć sposób na wstrzyknięcie czegoś do admin_pool.dashboardgroups - dobrze się bawić :)

+0

Wiem, tak powiedziała inna odpowiedź. Szukałem sposobów na wykorzystanie podmiotów, które nie są powiązane z ORM. W ten sposób mogę zdefiniować własne niestandardowe dane dla panelu administracyjnego, ale menu nadal będzie je zawierało, ponieważ będzie to usługa z tagiem sonata.admin. –

Powiązane problemy