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


Zend Framework 2 ViewModel returns an empty output in some modules

有不同的模块,它们都在操作中返回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。

既然你没有张贴你的控制器动作正确,这是猜测我可以做你的问题。

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

例如

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

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

你还应该检查模块的module.php文件,检查你是否有任何策略eg json策略应用于这个模块的bootstrap从module.config.php。

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

您还检查您的模块.config.php文件是否有适当的规格为您的视图管理器到您的模板。

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

希望这对你有帮助。