Преглед изворни кода

add custom template for actions in listField

if no template set, default one will be :
SonataAdminBundle:CRUD:list__action[ACTION_NAME].html.twig
Timothée Barray пре 14 година
родитељ
комит
08b1e3885f
2 измењених фајлова са 16 додато и 9 уклоњено
  1. 15 8
      Builder/ListBuilder.php
  2. 1 1
      Resources/views/CRUD/list__action.html.twig

+ 15 - 8
Builder/ListBuilder.php

@@ -105,25 +105,32 @@ class ListBuilder implements ListBuilderInterface
     
     public function buildActionFieldDescription(FieldDescription $fieldDescription)
     {
-        if (null === $fieldDescription->getTemplate())
-        {
+        if (null === $fieldDescription->getTemplate()) {
             $fieldDescription->setTemplate('SonataAdminBundle:CRUD:list__action.html.twig');
         }
         
-        if (null === $fieldDescription->getType())
-        {
+        if (null === $fieldDescription->getType()) {
             $fieldDescription->setType('action');
         }
         
-        if (null === $fieldDescription->getOption('name'))
-        {
+        if (null === $fieldDescription->getOption('name')) {
             $fieldDescription->setOption('name', 'Action');
         }
         
-        if (null === $fieldDescription->getOption('code'))
-        {
+        if (null === $fieldDescription->getOption('code')) {
             $fieldDescription->setOption('code', 'Action');
         }
+        
+        if (null !== $fieldDescription->getOption('actions')) {
+            $actions = $fieldDescription->getOption('actions');
+            foreach ($actions as $k => $action) {
+                if (!isset($action['template'])) {
+                    $actions[$k]['template'] = sprintf('SonataAdminBundle:CRUD:list__action%s.html.twig', $k);
+                }
+            }
+            
+            $fieldDescription->setOption('actions', $actions);
+        }
       
         return $fieldDescription;
     }

+ 1 - 1
Resources/views/CRUD/list__action.html.twig

@@ -1,5 +1,5 @@
 <td class="sonata-ba-list-field sonata-ba-list-field-action">
     {% for actions in field_description.options.actions %}
-        {% include 'SonataAdminBundle:CRUD:list__action' ~ actions ~ '.html.twig' %}
+        {% include actions.template %}
     {% endfor %}
 </td>