2012-10-09 36 views
0

SilverStripe 2.4.7SilverStripe模板

我试图把一个模板来构建我的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 %> 
] 
} 

我得到它的工作,它仅显示信息和新闻文章的一个点,但我不能再得到任何。任何意见非常感谢。

回答

2

这看起来不正确的 - 在的感觉:你有没有采取一看是这样的:

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

DataObjectSets妥善处理相结合,这应该是一个更好的办法。 除非你有非常具体的理由需要不同的东西 - 然后请说明他们

+0

我完全同意xeraa在这里,你不应该建立在模板 – Zauberfisch

+1

json如果由于某些原因你不能使用DataObjectsSets和formater,你可以也建立数组并将它们转换为json与$ json = Convert :: array2json($ array); http://paste2.org/p/2318703 – Zauberfisch

+0

感谢您的快速回复。所以我应该完全放弃模板并采取这种方法?我是否认为这应该位于控制器中? – MillyMonster