有不同的模块,所有这些模块都会在操作中返回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。
答案 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',
),
),
希望这会有所帮助。