ho creato una pagina personalizzata SonataAggiungere personalizzato percorso pagina Sonata per la barra di navigazione
percorso semplice
medapp_adminStreamCommands:
path: /admin/stream
defaults: { _controller: MedAppBundle:VideoChat/VideoChat:adminStreamCommands }
controller che restituisce il pool di amministrazione
public function adminStreamCommandsAction(Request $request)
{
return $this->render('@MedApp/AdminSonata/Stream/stream_commands.html.twig', array(
'admin_pool' => $this->get('sonata.admin.pool')));
}
vista Plain modello
{% extends '@MedApp/AdminSonata/standard_layout.html.twig' %}
{% block content %}
foobar
{% endblock content
Questo funziona, I c un accesso sul mio sito web con /admin/foo
e ottengo una pagina che ha il modello di amministratore Sonata con il mio contenuto 'foobar'.
La mia domanda è, come posso aggiungere questo percorso a sinistra e la barra di navigazione in alto senza dover modificare il modello predefinito? Questo perché il menu a sinistra è reso da un 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 %}
E io in qualche modo bisogno di aggiungere la mia nuova pagina da resi da questo menu.
Normalmente, una pagina viene aggiunto attraverso un servizio, ma questi sono costruiti sulla cima di un'entità:
servicename:
class: Bundle\Class
arguments: [~, Bundle\Entity\Entityname, ~]
tags:
- { name: sonata.admin, manager_type: orm, group: admin, label: CustomName}
La mia pagina non utilizza un soggetto, però, solo il contenuto o il contenuto statico che non dipende su un'entità.
So già che posso modificare i blocchi che generano i menu, ma stavo pensando che il modo migliore sarebbe stato aggiungere la mia classe come servizio taggato come sonata.admin che non ha un tipo di manager orm, in altre parole, non è un'entità. Come può essere fatto?
L'ho già fatto. Tuttavia, avrei bisogno di generare il menu in base sia al percorso del pool di amministratori che alle mie pagine personalizzate. Stavo pensando che la sonata abbia un modo di farlo attraverso il file yml o qualche altro modo più semplice piuttosto che farmi creare il mio menu personale. Immagino di non essere il primo a desiderare una funzionalità simile, ma non ho trovato nessun esempio che faccia questo. –
Non so se c'è un altro modo di creare il tuo menu, potresti anche impostare i tuoi link controllando il percorso corrente della tua pagina e aggiungere il tuo html, che è un modo sporco per farlo ma funzionerà. – HypeR
Infatti. Un altro modo sarebbe stato impostare una classe di amministrazione per un modello che non fosse un'entità legata all'ORM. Ho visto una discussione in questo modo ma, ancora una volta, non ho trovato alcun esempio su come farlo. Ciò funzionerebbe con certezza dato che posso aggiungere rotte alla raccolta temporanea del modello corrente e implementare azioni personalizzate. Sfortunatamente è qualcosa di cui non sono riuscito a trovare nulla o se è persino possibile. –