فهرست منبع

Merge branch 'xmlDriverFix'

Johannes M. Schmitt 13 سال پیش
والد
کامیت
f992966afa

+ 4 - 2
Metadata/Driver/XmlDriver.php

@@ -136,10 +136,12 @@ class XmlDriver extends AbstractFileDriver
                         $pMetadata->xmlValue = 'true' === (string) $pElem->attributes()->{'xml-value'};
                     }
 
-                    $accessor = $pElem->attributes()->{'accessor'};
+                    $getter = $pElem->attributes()->{'accessor-getter'};
+                    $setter = $pElem->attributes()->{'accessor-setter'};
                     $pMetadata->setAccessor(
                         (string) ($pElem->attributes()->{'access-type'} ?: $classAccessType),
-                        $accessor ? (string) $accessor : null
+                        $getter ? (string) $getter : null,
+                        $setter ? (string) $setter : null
                     );
                 }
 

+ 5 - 1
Resources/doc/index.rst

@@ -560,7 +560,8 @@ XML Reference
     <?xml version="1.0" encoding="UTF-8">
     <serializer>
         <class name="Fully\Qualified\ClassName" exclusion-policy="ALL" xml-root-name="foo-bar" exclude="true"
-            accessor-order="custom" custom-accessor-order="propertyName1,propertyName2,...,propertyNameN">
+            accessor-order="custom" custom-accessor-order="propertyName1,propertyName2,...,propertyNameN"
+            access-type="public_method">
             <property name="some-property"
                       exclude="true"
                       expose="true"
@@ -569,6 +570,9 @@ XML Reference
                       since-version="1.0"
                       until-version="1.1"
                       xml-attribute="true"
+                      access-type="public_method"
+                      accessor-getter="getSomeProperty"
+                      accessor-setter="setSomeProperty"
             >
                 <!-- You can also specify the type as element which is necessary if
                      your type contains "<" or ">" characters. -->

+ 12 - 0
Tests/Metadata/Driver/XmlDriverTest.php

@@ -70,6 +70,18 @@ class XmlDriverTest extends BaseDriverTest
         $this->assertEquals($p, $m->propertyMetadata['title']);
     }
 
+    public function testAccessorAttributes()
+    {
+        $m = $this->getDriver()->loadMetadataForClass(new \ReflectionClass('JMS\SerializerBundle\Tests\Fixtures\GetSetObject'));
+
+        $p = new PropertyMetadata($m->name, 'name');
+        $p->type = 'string';
+        $p->getter = 'getTrimmedName';
+        $p->setter = 'setCapitalizedName';
+
+        $this->assertEquals($p, $m->propertyMetadata['name']);
+    }
+
     protected function getDriver()
     {
         $append = '';

+ 7 - 0
Tests/Metadata/Driver/xml/GetSetObject.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<serializer>
+    <class name="JMS\SerializerBundle\Tests\Fixtures\GetSetObject" access-type="public_method">
+        <property name="id" type="integer" access-type="property" />
+        <property name="name" type="string" accessor-getter="getTrimmedName" accessor-setter="setCapitalizedName" />
+    </class>
+</serializer>