假设我有以下函数:
function fruit ($request) {
...
$response = array('apple' => '1dollars', 'mango' => '2dollars');
return json_encode($response);
}
我想在我的模板中访问类似$response.apple
的东西。
我已经尝试了以下方法,但这不起作用,因为我的页面上没有显示任何内容:
<% control response %>
<h1>$response.apple<h2>;
<% end_control %>
如果我尝试从我的模板访问函数fruit
, fruit
给我一个错误。 fruit(request)
也给了我一个错误。
但是,如果我去水果,它返回我的数据绝对没问题:
["apple":"1dollar","mango":"2dollar"]
您需要以不同的方式做两件事:
- 如果
- 希望数据数组在模板中可访问,则必须将数据数组包装在 ArrayData 或 ArrayList 对象中。
- 必须返回原始数组(在这种情况下,将自动呈现模板 ControllerName_actionName.ss)或显式返回呈现的模板。
所以更像是:
function fruit ($request) {
...
return $this->customise(array(
'response' => new ArrayData(array(
'apple' => '1dollars',
'mango' => '2dollars'
));
))->renderWith(array('YourTemplate'));
}
请注意,"响应"的命名在那里是完全任意的。另一种可能的方法是使"响应"成为控制器上的一种方法(显然我会将其命名为不同的东西,为了清楚起见,我只是保留您的名称):
public function response() {
return new ArrayData(array(
'apple' => '1dollars',
'mango' => '2dollars'
));
}
在这种情况下,您可以在操作中返回以下内容:
return $this->renderWith(array('MyTemplate'));