Допустим, у меня есть следующая функция:
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"]
Вам нужно сделать две вещи по-разному:
Так что больше похоже на:
function fruit ($request) {
...
return $this->customise(array(
'response' => new ArrayData(array(
'apple' => '1dollars',
'mango' => '2dollars'
));
))->renderWith(array('YourTemplate'));
}
Обратите внимание, что наименование «response» там совершенно произвольно. Другой возможный способ сделать это — сделать «ответ» методом на вашем контроллере (очевидно, я бы назвал его чем-то другим, я просто сохраню ваши имена для ясности):
public function response() {
return new ArrayData(array(
'apple' => '1dollars',
'mango' => '2dollars'
));
}
В этом случае вы можете просто вернуть следующее в вашем действии:
return $this->renderWith(array('MyTemplate'));
Других решений пока нет …