I am trying to implement View Strategy in ZF2.
As far as the basic setup, everything seem to be working fine except that
ViewEvent Renderer is always null, thus the renderer never gets injected to
the Strategy, and TemplateResolver still requests a template and displays
the following error.
PhpRenderer::render: Unable to render template "api/api/get"; resolver
could not resolve to a file'
I have even tried to copy the code JsonModel and JsonStrategy from ZF2, and
still get the same result.
*ViewYamlStrategy.php*
public function selectRenderer(ViewEvent $e)
{
$renderer = $e->getRenderer(); // Always return null
}
*module.php*
public function getServiceConfig()
{
return ['factories' => [
'ViewYamlRenderer' =>
"Namespace\Mvc\Service\ViewYamlRendererFactory",
'ViewYamlStrategy' =>
"Namespace\Mvc\Service\ViewYamlStrategyFactory",
],
];
}
*module.config.php*
'view_manager' => [
'strategies' => [
'ViewYamlStrategy'
],
],
*controller*
public function getList()
{
return new YamlModel($data);
}
*ViewYamlStrategy.php*
function __construct(ViewYamlRenderer $renderer)
{
$this->renderer = $renderer;
}
public function attach(EventManagerInterface $events, $priority = 1)
{
$this->listeners[] = $events->attach(ViewEvent::EVENT_RENDERER,
[$this, "selectRenderer"], $priority);
$this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE,
[$this, "injectResponse"], $priority);
}
public function selectRenderer(ViewEvent $e)
{
$renderer = $e->getRenderer(); // Always null
if ($this->renderer !== $renderer) {
return;
}
}
public function injectResponse(ViewEvent $e)
{
$renderer = $e->getRenderer(); // Always null
if ($this->renderer !== $renderer) {
return;
}
$result = $e->getResult();
$response = $e->getResponse();
$response->setContent($result);
}
*ViewYamlRenderer.php*
public function render($nameOrModel, $values = null)
{
return $nameOrModel->serialize();
}
public function setResolver(\Zend\View\Resolver\ResolverInterface
$resolver)
{
$this->resolver = $resolver;
}
*YamlModel.php*
protected $captureTo = null;
protected $terminate = true;
public function serialize()
{
/*Serialize Object and return a string*/
}
thanks
--
View this message in context:
http://zend-framework-community.634137.n4.nabble.com/zf2-view-strategy-ViewEvent-Renderer-is-always-null-tp4661396.html
Sent from the Zend Framework mailing list archive at Nabble.com.
--
List: [email protected]
Info: http://framework.zend.com/archives
Unsubscribe: [email protected]