1

我正在开发 Zend MVC 应用程序。

有时我喜欢回显一些文本只是为了快速而肮脏的调试。例如

<?php
class MyClass {}
echo('hello world - yes this script is included');

我可以在我的引导程序中回显“调试文本”> 但是,当在我的模型或控制器中回显文本时,它不会在输出中呈现。

我正在使用 Zend 1.9.5 并将 Zend Layout 与 MVC 一起使用


某处是否存在抑制所有“呈现的非视图脚本”输出的设置?

4

4 回答 4

1

您也可以使用 die() 而不是 echo :) 它会起作用。或者像这样使用 Zend_Log 和输出编写器:

$writer = new Zend_Log_Writer_Stream('php://output');
于 2010-01-08T17:22:56.920 回答
1

输出缓冲可能是罪魁祸首。尝试:

echo 'my debug output';
flush();
于 2010-01-08T20:49:19.483 回答
0

如果打开了 viewRendering,它可能正在寻找要呈现的视图/脚本/并且可能不显示您的回显语句。

您可以尝试关闭给定控制器的 viewRendering 并查看是否有帮助。

viewRenderer->setNoRender()
于 2010-01-08T16:04:18.467 回答
0

我正在回答这个问题,因为我在 10 个月后回到了相同的代码,这让我再次感到困惑。

我处于默认模块、索引控制器和索引操作的上下文中。

我想回显一些简单的文本,以快速查看代码中发生了什么:

class IndexController extends Zend_Controller_Action
 {

 public function indexAction()
  {
  //home page
  echo '<h1>hello world</h1>';

  //set the special home page layout
  $this->_helper->layout()->setLayout('home-page');
  }

麻烦的是 - 回显的文本只是没有出现。

它适用于其他控制器,但不是这个。这让我快疯了。

现在 - 我已经解决了这个问题。

我为这个特定的控制动作使用了一个特殊的布局……一个“主页布局”。

在我的主页布局中,我没有呈现任何视图脚本。所有的内容和设计都在布局中。因为主页是一个特殊的、唯一的页面,所以没有必要分成两步视图。出于这个原因,我没有理由需要视图脚本。但是,我确实创建了一个 'views\scripts\index\index.phtml' 以防止 ZF 抱怨。然而,我没有在我的布局中渲染它——因为它不是必需的。

任何回显的输出都被捕获到layout()->content(由“默认”响应段中的布局自动分配)。因为我没有回显该段,所以它表现得好像回显的文本被抑制了。

为了解决这个问题,我只需要确保我正在回显内容片段。

IE

<html>
<head>
...
</head>
<body>
... my home page html...
<?php echo $this->layout()->content ?>
... my home page html...
</body>
</html>

其中,我的调试文本也被回显......将呈现为:

... my home page html...
<h1>hello world</h1>
... my home page html...      
于 2010-11-04T04:58:39.750 回答