Tengo una entidad. Necesito ejecutar algún código JS cuando la entidad se carga en una ventana emergente. ¿Hay alguna forma de agregar un código JS/HTML personalizado a un formulario de entidad a través de la configuración de clase de administrador? P.ej. para pasar una plantilla como una opción¿Cómo agregar el código JS al formulario de entidad?
Respuesta
Usted puede hacerlo de esta manera: -
añadir un parámetro de clase en su FormMapper así: -
protegidas configureFormFields de función (FormMapper $ formMapper) {$ formMapper -> add ('description', null, array ('attr' => array ('class' => 'for_popup'), 'required' => false)) }
Extender el
edit.html.twig
/base_edit.html.twig
a partir de plantillas CRUD Sonata
--- 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 %}
Use su edit.html.twig
en lugar de Sonata CRUD definiéndolo en la función getEditTemplate (dentro de su clase Admin).
public function getEditTemplate()
{
return 'YourAdminBundle:ControllerName:edit.html.twig';
}
También puede establecer la plantilla de edición personalizada cuando se inyecta el servicio de administración.
<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 En lugar de utilizar $ this-> setTemplate() dentro del método configureFormFields de la clase de administración, en su lugar puede añadir su propia implementación del método getTemplate, la mía tiene el siguiente aspecto:
/**
* 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;
}
}
- 1. Agregar entidad al panel de Symfony2 SonataAdminBundle
- 2. Agregar js a un formulario de nodo drupal
- 3. Cómo agregar controles dinámicamente al formulario ASP.NET?
- 4. Cómo agregar jQuery en el archivo JS
- 5. Agregar Common Hook al modo js
- 6. Agregar el menú desplegable usando d3.js
- 7. Agregar controles mediante programación al formulario WPF
- 8. Cómo agregar código PHP al archivo .tpl
- 9. Agregar imágenes al código fuente
- 10. Cómo agregar JS a Drupal 7
- 11. Agregar fecha de compilación al código
- 12. Formulario de entidad de compilación Url
- 13. ¿Cómo agregar CSRF al formulario creado manualmente en wordpress?
- 14. vista previa del formulario de Django - Agregar el usuario al formulario antes de guardar
- 15. ¿Cómo agregar la función SQL definida por el usuario al marco de la entidad?
- 16. Agregar error al elemento de formulario de Symfony 2
- 17. Agregar índice con el código de entidad de marco primero (CTP5)
- 18. Agregar descripciones de clase al código?
- 19. Entidad Marco: actualizar entidad o agregar si no existe
- 20. Accediendo al formulario principal desde el formulario
- 21. ¿Cómo agregar JS programáticamente en Magento?
- 22. Agregar CSS al tipo de formulario es Symfony2
- 23. Cómo agregar imágenes al lienzo
- 24. MessageBox al cerrar el formulario
- 25. ¿Django edita el formulario basado en agregar formulario?
- 26. Problema al persistir Entidad
- 27. Django agregar clase al formulario <input ..> campo
- 28. ¿Cómo puedo agregar un tipo de imagen a una primera entidad de código EF4?
- 29. Cómo ejecutar jquery validate() al usar el asistente de formulario?
- 30. ¿Cómo agregar botones dinámicamente a mi formulario?
base_edit debe extender la plantilla crud sonata? Debo especificar extender la etiqueta en esta plantilla o simplemente puedo colocar esta plantilla en la misma ruta que en el paquete sonata? Gracias por su ayuda –
No toque nada en Sonata. Copie la base_edit.html.twig de sonata en su carpeta YourBundle/Resources/YourController /. Actualizaré la respuesta para explicar cómo. – Amit
Sonata aparentemente ha reemplazado la función getEditTemplate() con getTemplate ('edit'), por lo que es más difícil. Lo que terminé haciendo fue: $ this-> setTemplate ('edit', 'MyBundle: Admin: edit_user.html.twig'); dentro de configureFormFields() de mi administrador – Jessica