SORU
13 EYLÜL 2012, PERŞEMBE


Ne kadar iyi hiper bir biçimi JMSSerializerBundle oluşturmak için?

XML yanıt bu olur oluşturmak istiyorum diyelim ki aşağıdaki gibi görünür:

<?xml version="1.0" encoding="utf‐8"?>
<product xmlns="urn:com.acme.prods" xmlns:atom="http://www.w3.org/2005/xlink">
  <id>1234</id>
  <name>Red Stapler</name>
  <price currency="EUR">3.14</price>
  <atom:link rel="payment" type="application/com.acme.shop xml"
             href="http://acme.com/products/1234/payment" />
</product>

Aşağıdaki gibi görünen bir etki alanı modeli verilen:

<?php
// Product.php
namespace Acme\Bundle\ProductBundle\Entity;
use Acme\Bundle\ProductBundle\Money\Money;

class Product
{
  /**
   * @var integer
   */
  private $id;

  /**
   * @var string
   */
  private $name;

  /**
   * @var Money
   */
  private $price;

  [..]
}

Ve para-sınıf çizgisinde:

<?php
// Money.php
namespace Acme\Bundle\ProductBundle\Money;

class Money
{
  /**
   * @var string
   */
  private $currency;
  /**
   *
   */
  private $amount;
}

Şimdi, sorularıma. Oldukça basit aşağıdaki gibi bir yanıt oluşturmak için olurdu

<?xml version="1.0" encoding="utf‐8"?>
<product>
  <id>1234</id>
  <name>Red Stapler</name>
  <price currency="EUR">3.14</price>
</product>

ya açıklamalar, XML veya YAML söylemek kullanılarak Ürün-nesne seri hale getirmek için nasıl JMSSerializerBundle. Ancak, xmlns:atom <atom:link> girişleri kavramı yoktur gerektiğinden idare tarafından belirtilen, olmamalıdırnasılveneredeyer almaktadır. Ayrıca relözellikler edit gibi daha farklı bağlantılar düşünebiliriz.
Aklınıza gelen tek çözüm belirli nesneler için seri hale getirme olayları dinleyen bir hizmet olacak ve uygun olarak bu nitelikleri ve etiketleri ekler. Hizmet Dİ Request, Routerservis vb tutun, istenen formata uygun bir biçimde bu bağlantıları oluşturmak için kullanabilirsiniz. E XML-yanıt, application/media-format xml json yanıt ise uygun türünü belirlemek olabilir ben, böyle bir şey üretebilir

"links": [
   {
     "rel": "payment", 
     "type": "application/media-format json", 
     "href": "[...]"
   }
]

Şimdi, the documentation for JMSSerializerBundle @PreSerialize için açıklamalar bulmak ve @PostSerialize ama tek nesne sıralanmış yöntemlerini çağırmak için mümkün görünmektedir.
Eğer bu sağlanabilirse/nasıl biliyor mu? Ya Dal gibi bir şablon motoru kullanmak ve el ile XML-tepki oluşturmak zorunda mıyım?

CEVAP
25 Kasım 2012, Pazar


Seri hale getirici Bundle, yalnızca seri hale getirme ve serisini kaldırma, daha karmaşık semantik görevleri ile ilgili olarak, bu durum için yeterli olmayabilir.

FSCHateoasBundle API için oldukça hiper bir biçim uygulamak bakarak öneririm.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ICON

    ICON

    19 EKİM 2011
  • Pepsi

    Pepsi

    1 Kasım 2005
  • Thom Hall

    Thom Hall

    24 Kasım 2006