Ho un'entità. Ho bisogno di eseguire qualche codice JS quando l'entità viene caricata in un popup. C'è un modo per aggiungere un codice JS/HTML personalizzato a un modulo entità tramite la configurazione della classe admin. Per esempio. passare un modello come opzioneCome aggiungere codice JS al modulo entità?
risposta
si può fare in questo modo: -
Aggiungere un parametro di classe nel vostro FormMapper in questo modo: -
configureFormFields funzione protetta (FormMapper $ formMapper) {$ formMapper -> add ('descrizione', null, array ('attr' => array ('class' => 'for_popup'), 'required' => false)) }
Estendere il
edit.html.twig
/base_edit.html.twig
dalla Sonata CRUD Modelli
--- edit.html.twig ----
{% extends 'YourBundle:YourAdminClass:base_edit.html.twig' %}
--- --- base_edit.html.twig
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
// Your JS code here
</script>
{% endblock %}
Usa il tuo edit.html.twig
invece di Sonata CRUD definendolo nella funzione getEditTemplate (all'interno della classe Admin).
public function getEditTemplate()
{
return 'YourAdminBundle:ControllerName:edit.html.twig';
}
È anche possibile impostare il modello di modifica personalizzato quando si inserisce il servizio di amministrazione.
<service id="sonata.admin.bf" class="Wyzbiz\Bundle\MainBundle\Admin\BfAdmin">
<tag name="sonata.admin" manager_type="orm" group="Content" label="BFs"/>
<argument />
<argument>Wyzbiz\Bundle\MainBundle\Entity\Bf</argument>
<argument>WyzbizMainBundle:CRUD</argument>
<call method="setTranslationDomain"><argument>WyzbizMainBundle</argument></call>
<call method="setTemplate"><argument>list</argument>
<argument>WyzbizMainBundle:CRUD/Bf:list.html.twig</argument></call>
</service>
@Jessica Invece di usare $ this-> setTemplate() all'interno del metodo configureFormFields della classe di amministrazione, è possibile invece aggiungere la tua implementazione del metodo getTemplate, miniera assomiglia a questo:
/**
* Override core method to display custom template(s)
*/
public function getTemplate($name)
{
switch ($name) {
case 'edit':
return 'YourAdminBundle:YourAdminEntity:edit.html.twig';
break;
default:
return parent::getTemplate($name);
break;
}
}
base_edit dovrebbe estendere il modello di sonata crud? Dovrei specificare il tag di estensione in questo modello o posso semplicemente posizionare questo modello nello stesso percorso del bundle sonata? Grazie per il vostro aiuto –
Non toccare nulla in Sonata. Copia semplicemente il file base_edit.html.twig nella cartella YourBundle/Resources/YourController /. Aggiornerò la risposta per spiegare come. – Amit
Sonata ha apparentemente sostituito la funzione getEditTemplate() con getTemplate ('edit'), rendendo questo più difficile. Quello che ho finito è stato: $ this-> setTemplate ('edit', 'MyBundle: Admin: edit_user.html.twig'); all'interno del mio admin configureFormFields() – Jessica