浏览代码

move x-editable types mapping to container parameters

lutangar 10 年之前
父节点
当前提交
586cb97ecc
共有 2 个文件被更改,包括 39 次插入18 次删除
  1. 25 0
      Resources/config/twig.xml
  2. 14 18
      Twig/Extension/SonataAdminExtension.php

+ 25 - 0
Resources/config/twig.xml

@@ -4,12 +4,37 @@
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
 
+    <parameters>
+        <parameter key="sonata.admin.twig.extension.x_editable_type_mapping" type="collection">
+            <parameter key="choice">select</parameter>
+            <parameter key="boolean">select</parameter>
+            <parameter key="text">text</parameter>
+            <parameter key="textarea">textarea</parameter>
+            <parameter key="html">textarea</parameter>
+            <parameter key="email">email</parameter>
+            <parameter key="string">text</parameter>
+            <parameter key="smallint">text</parameter>
+            <parameter key="bigint">text</parameter>
+            <parameter key="integer">number</parameter>
+            <parameter key="decimal">number</parameter>
+            <parameter key="currency">number</parameter>
+            <parameter key="percent">number</parameter>
+            <parameter key="url">url</parameter>
+            <parameter key="date">date</parameter>
+        </parameter>
+    </parameters>
+
     <services>
         <service id="sonata.admin.twig.extension" class="Sonata\AdminBundle\Twig\Extension\SonataAdminExtension">
             <tag name="twig.extension"/>
 
             <argument type="service" id="sonata.admin.pool" />
             <argument type="service" id="logger" on-invalid="ignore" />
+
+            <call method="setXEditableTypeMapping">
+                <argument>%sonata.admin.twig.extension.x_editable_type_mapping%</argument>
+            </call>
+
         </service>
     </services>
 </container>

+ 14 - 18
Twig/Extension/SonataAdminExtension.php

@@ -35,6 +35,11 @@ class SonataAdminExtension extends \Twig_Extension
      */
     protected $logger;
 
+    /**
+     * @var string[]
+     */
+    private $xEditableTypeMapping = array();
+
     /**
      * @param Pool            $pool
      * @param LoggerInterface $logger
@@ -390,6 +395,14 @@ EOT;
         return $admin->getUrlsafeIdentifier($model);
     }
 
+    /**
+     * @param array $xEditableTypeMapping
+     */
+    public function setXEditableTypeMapping($xEditableTypeMapping)
+    {
+        $this->xEditableTypeMapping = $xEditableTypeMapping;
+    }
+
     /**
      * @param $type
      *
@@ -397,23 +410,6 @@ EOT;
      */
     public function getXEditableType($type)
     {
-        $mapping = array(
-            'boolean'    => 'select',
-            'text'       => 'text',
-            'textarea'   => 'textarea',
-            'html'       => 'textarea',
-            'email'      => 'email',
-            'string'     => 'text',
-            'smallint'   => 'text',
-            'bigint'     => 'text',
-            'integer'    => 'number',
-            'decimal'    => 'number',
-            'currency'   => 'number',
-            'percent'    => 'number',
-            'url'        => 'url',
-            'date'       => 'date',
-        );
-
-        return isset($mapping[$type]) ? $mapping[$type] : false;
+        return isset($this->xEditableTypeMapping[$type]) ? $this->xEditableTypeMapping[$type] : false;
     }
 }