Sie können Support über die Symfony2 mailing list erhalten.
Falls Sie einen Bug gefunden haben, öffnen Sie bitte ein neues Ticket im Bug-Tracker.
Nutzen Sie das Wissen und die Expertise eines Symfony2 Experten direkt vor Ort.
http://jmsyst.com/unterstuetzung
You can register any service as a handler by adding either the jms_serializer.handler, or the jms_serializer.subscribing_handler.
<service id="my_handler" class="MyHandler" public="false">
<tag name="jms_serializer.handler" type="DateTime" direction="serialization" format="json"
method="serializeDateTimeToJson" />
</service>
You can use the tags jms_serializer.event_listener, or jms_serializer.event_subscriber in order to register a listener.
The semantics are mainly the same as registering a regular Symfony2 event listener except that you can specify some additional attributes:
Sometimes you want to serialize objects which are shipped by a third-party bundle. Such a third-party bundle might not ship with metadata that suits your needs, or possibly none, at all. In such a case, you can override the default location that is searched for metadata with a path that is under your control.
jms_serializer:
metadata:
directories:
FOSUB:
namespace_prefix: "FOS\\UserBundle"
path: "%kernel.root_dir%/serializer/FOSUB"
<jms-serializer>
<metadata>
<directory namespace_prefix="FOS\UserBundle"
path="%kernel.root_dir%/serializer/FOSUB" />
</metadata>
</jms-serializer>
Below you find a reference of all configuration options with their default values:
# config.yml
jms_serializer:
handlers:
datetime:
default_format: "c" # ISO8601
default_timezone: "UTC" # defaults to whatever timezone set in php.ini or via date_default_timezone_set
property_naming:
separator: _
lower_case: true
metadata:
cache: file
debug: "%kernel.debug%"
file_cache:
dir: "%kernel.cache_dir%/serializer"
# Using auto-detection, the mapping files for each bundle will be
# expected in the Resources/config/serializer directory.
#
# Example:
# class: My\FooBundle\Entity\User
# expected path: @MyFooBundle/Resources/config/serializer/Entity.User.(yml|xml|php)
auto_detection: true
# if you don't want to use auto-detection, you can also define the
# namespace prefix and the corresponding directory explicitly
directories:
any-name:
namespace_prefix: "My\\FooBundle"
path: "@MyFooBundle/Resources/config/serializer"
another-name:
namespace_prefix: "My\\BarBundle"
path: "@MyBarBundle/Resources/config/serializer"
visitors:
json:
options: 0 # json_encode options bitmask
xml:
doctype_whitelist:
- '<!DOCTYPE authorized SYSTEM "http://some_url">' # an authorized document type for xml deserialization
<!-- config.xml -->
<jms-serializer>
<handlers>
<object-based />
<datetime
format="Y-mdTH:i:s"
default-timezone="UTC" />
<array-collection />
<form-error />
<constraint-violation />
</handlers>
<property-naming
seperator="_"
lower-case="true" />
<metadata
cache="file"
debug="%kernel.debug%"
auto-detection="true">
<file-cache dir="%kernel.cache_dir%/serializer" />
<!-- If auto-detection is enabled, mapping files for each bundle will
be expected in the Resources/config/serializer directory.
Example:
class: My\FooBundle\Entity\User
expected path: @MyFooBundle/Resources/config/serializer/Entity.User.(yml|xml|php)
-->
<directory
namespace-prefix="My\FooBundle"
path="@MyFooBundle/Resources/config/serializer" />
</metadata>
<visitors>
<xml>
<whitelisted-doctype><![CDATA[<!DOCTYPE...>]]></whitelisted-doctype>
<whitelisted-doctype><![CDATA[<!DOCTYPE...>]]></whitelisted-doctype>
</xml>
</visitors>
</jms-serializer>