【问题标题】:SilverStripe TemplateSilverStripe 模板
【发布时间】:2012-10-09 16:11:30
【问题描述】:

SilverStripe 2.4.7

我正在尝试组合一个模板来构建我的 JSON。我的班级有如下关系。

一家商店可以有许多优惠和许多新闻文章。优惠和新闻文章可以属于许多商店。

我的模板是这样的

{
"StoresHolder" : [
<% control Children %>
{
    "ID" : "$ID",
    "Name" : "$Name",
    "Address1" : "$Address1",
    "Address2" : "$Address2",
    "County" : "$County",
        "News"  : [
            <% control News %>
            {
            "ID" : "$ID",
            "Title" : "$Title",
            "DatePublished" : "$DatePublished",
            "ExpiryDate" : "$ExpiryDate",
            "Body" : "$Body",
            "URL" : "$URL",
            "Photo" : "$Photo.Filename"
            }<% if Middle %>,<% end_if %>
            <% end_control %>
        ],
        "Offers" : [
            <% control Offers %>
            {
            "ID" : "$ID",
            "Title" : "$Title",
            "Description" : "$Description",
            "Weight" : "$Weight",
            "Price" : "$Price",
            "Savings" : "$Savings",
            "Expires" : "$Expires",
            "Photo" : "$Photo.Filename"
            }<% if Middle %>,<% end_if %>
            <% end_control %>
        ]
}<% if Last %> <% else %>,<% end_if %>
<% end_control %>
]
}

我让它工作到只显示其中一条优惠和新闻文章的地步,但我无法进一步了解。非常感谢任何建议。

【问题讨论】:

    标签: templates silverstripe


    【解决方案1】:

    这看起来不对 - 从某种意义上说:你看过这样的东西吗:

    $data = DataObject::get(...); 
    $formatter = new JSONDataFormatter(); 
    return $formatter->convertDataObjectSet($data);
    

    结合对DataObjectSets的正确处理,这应该是一个更好的方法。 除非您有非常具体的理由需要不同的东西 - 请说明它们

    【讨论】:

    • 这里我完全同意xeraa,你不应该在模板中构建json
    • 如果由于某种原因您不能使用 DataObjectsSets 和格式化程序,您还可以构建数组并将它们转换为 json 使用 $json = Convert::array2json($array); paste2.org/p/2318703
    • 感谢您的快速回复。所以我应该完全废弃模板并采用这种方法吗?我是否认为这应该位于控制器中?
    • 没错,你不需要模板 :)
    • 好的,感谢您的帮助。我会试试这个,看看效果如何。但是,“正确处理 DataObjectSets”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多