Стратегия рендеринга представления (rendering strategy) определяет то, как будет визуализирована страница.
По умолчанию, чтобы получить HTML страницу, производится рендеринг шаблона представления .phtml с помощью класса PhpRenderer
,
живущего в простанстве имен Zend\View\Renderer
. Эта стратегия работает хорошо в 99% случаев. Но иногда вам может
понадобиться отобразить что-то кроме HTML страницы, например, ответ в формате JSON или новостную ленту (RSS feed).
Ответ в формате JSON обычно возвращается, когда вы реализуете какой либо API (Application Programming Interface). API используется для того, чтобы извлечь данные с веб-сайта в машинно-читаемом виде. Ответ в виде новостной ленты (RSS feed) обычно используется для публикации часто меняющейся информации, такой как посты блога или новости.
Итак, ZF3 из коробки предлагает три стратегии рендеринга представления:
PhpRendererStrategy
).JsonStrategy
, выдающая ответ в формате JSON.FeedStrategy
, выдающая RSS feed.Например, давайте покажем как использовать стратегию JsonStrategy
, чтобы вернуть ответ JSON из действия контроллера.
Сначала вам нужно зарегистрировать стратегию в файле конфигурации module.config.php:
<?php
return [
//...
'view_manager' => [
//...
'strategies' => [
'ViewJsonStrategy',
],
],
];
Затем верните объект JsonModel
(вместо обычного ViewModel
) из метода действия контроллера:
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\JsonModel;
class IndexController extends AbstractActionController
{
public function getJsonAction()
{
return new JsonModel([
'status' => 'SUCCESS',
'message'=>'Here is your data',
'data' => [
'full_name' => 'John Doe',
'address' => '51 Middle st.'
]
]);
}
}
Если вы откроете страницу http://localhost/application/getJson в браузере, вы должны увидеть ответ в формате JSON:
{'status':'SUCCESS', 'message':'Here is your data', 'data':{'full_name:'John Doe', 'address':'51 Middle st.'}}