Zend Framework 2 ViewModel在某些模块中返回空输出

时间:2013-03-07 12:26:02

标签: php viewmodel zend-framework2

有不同的模块,所有这些模块都会在操作中返回ViewModel。但不知何故,ViewModel在其中一个模块中表现得很奇怪。

我在说;

$view = new ViewModel(array('data' => $someContent));
$view->setTemplate('a valid path to template');

return $view;

获取空白页面。

如果我在相关模板的末尾放置一个exit()语句,如

<!DOCTYPE html>
<html>
    ...
</html>
<?php exit(); ?>

我可以获得预期的输出,因为脚本在那里结束但是我输掉了输出。

如果我说* var_dump($ view)*,我可以看到$ view是 Zend \ View \ Model \ ViewModel 的一个实例。

没有错误,只有空输出,甚至通知警告都可见。因此,它不会抛出任何异常,错误,警告,通知等。

再次提醒一下,它只发生在一个特定的模块中,但该模块与其他模块没有区别。

我不是ZF大师,我正在研究别人的代码,所以请给我一个能够找到问题的起点。

提前致谢。

编辑:我有额外的信息;

如果我使用JsonModel而不是ViewModel,它可以工作,你可能知道,JsonModel扩展了ViewModel。

1 个答案:

答案 0 :(得分:1)

由于您尚未正确发布控制器操作,因此我猜测我可以对您的问题做些什么。

在Zend框架2中,有各种类型的控制器,您可以在模块中扩展控制器。

例如,如果您从AbstractActionController扩展控制器,您的视图将正确返回。

所以这里的问题是你的其他模块有控制器扩展AbstractActionController。未正确返回视图的此模块可能无法扩展它。相反,它可能会扩展其他控制器,如restfulcontrollers

您还应该检查模块的module.php文件,检查是否有任何策略,例如从module.config.php为此模块的bootstrap应用json策略。

例如。

return array(
    'view_manager' => array(
        'strategies' => array(
           'ViewJsonStrategy',
        ),
    ),
)

您还检查了module.config.php文件,看看您的viewmanager是否具有适当的模板规范。

例如。

'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),

希望这会有所帮助。