如何自定义Atom提要?

时间:2014-06-18 10:53:03

标签: zend-framework2 atom-feed writer

我正在为我的ZF2应用程序创建一个新模块。我需要将一些数据公开为Atom提要。我给出的规范看起来像这样。

<entry>
    <source>MySource</source>
    <title>MyTitle</title>
    <link href="http://mylink:1" rel="self" />
    <updated>2014-06-17T07:56:03.1696831Z</updated>
    <content type="MyContentType">
        <customerids xmlns="">MAGENTO:1</customerids>
        <customerids xmlns="">CRM:123</customerids>
        <customerids xmlns="">OTHER:999</customerids>
        <passwordalgorithm xmlns="">SHA-2</passwordalgorithm>
        <passwordsalt xmlns="">QxLUF1bgIAdeQX</passwordsalt>
    </content>
</entry>

我可以使用Zend\Feed\Writer\Feed

轻松制作Feed

我无法解决的问题是如何在内容元素上设置类型以及如何将其他元素添加到内容元素。我能得到的只是一种带字符串内容的XHTML。

我也无法弄清楚如何在条目中添加“source”元素。

我真的不想沿着使用视图手动制作此Feed的道路。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我对此只有部分答案。

XHTML内容类型appears to be hard-coded into the Atom renderer,因此这不是您可以轻松更改的内容。 Zend Feed Writer有一个&#39;扩展&#39;系统,您可以使用它来实现您的目标;但是这没有记录,我不能通过查看代码很容易看出它是如何工作的,所以这可能不会直截了当。

要设置源代码,您应该可以执行以下操作:

$source = $entry->createSource();
$source->setTitle('Source title');
// [etc.]
$entry->setSource($source);

该组件似乎要求源元素上的某些元素与您问题中的单个值示例完全匹配,因此这可能会或可能不会允许您执行您之后的操作。

由于您的示例主要包含自定义元素,因此我会质疑Atom是否适合此任务。我可能不会像您在问题中提到的那样使用视图,但是您可能更容易直接使用DomDocument或SimpleXML。

答案 1 :(得分:0)

是。框架中的原子渲染器太严格,不能满足我的需求。它似乎专门用于内容提要,例如博客文章。

正如蒂姆所提到的,对于这种定制提供的灵活方法越多,它就可以直接使用DomDocument或SimpleXML,而不是使用抽象来抽象出那些细节。

这正是我所做的,这使我能够创建指定的Feed。

感谢您的确认,蒂姆。