2010-01-08 59 views
1

我正在开发一个Zend MVC应用程序。Zend MVC - 我回显一些测试调试输出,但它似乎被suppresed,并没有显示

有时我喜欢回应一些文本,只是为了快速和肮脏的调试。 e.g

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

我可以在我的引导回声“调试文本”>但是,当文字在我的模型或控制器它不被呈现在输出呼应。

我使用Zend 1.9.5和使用Zend布局与MVC


是否有被抑制“输出的所有'变为无视图脚本”设置的地方?

+0

是你实际上包括MyClass的文件到您的应用程序,或实例MyClass的()作为应用程序中任何位置的对象? – Mark 2010-01-08 16:03:45

+0

我在做两个。首先包括文件并刷新页面以查看是否输出文本,有时还将类实例化为对象。这实际上只是一些“调试文本”的例子。 – 2010-01-10 16:14:47

+0

到目前为止所有的答复者 - 谢谢我会尝试这些建议 – 2010-01-10 16:17:22

回答

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(由默认响应段的布局自动分配)。因为我没有回应该段,所以它表现得好像被回显的文本被压制一样。

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

<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...  
0

如果viewRendering处于打开状态,它可能正在查找view/scripts /来渲染,并可能不会显示您的echo语句。

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

viewRenderer->setNoRender() 
1

你也可以用die()代替echo :)它会起作用。或者像这样使用Zend_Log和输出写入器:

$writer = new Zend_Log_Writer_Stream('php://output'); 
+0

yep死()做的伎俩,让我很快删除它。 – 2010-01-22 12:12:46

+0

但最好有一个函数,它的callstact并获取其中“死”被称为位置(应该是2级),然后呼应类似 'Form_Contact ::的init():第56行: NULL' 这使得做一些扩展的调试运行时没有debuger更容易去除这些电话:) – 2010-01-22 14:44:38

1

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

echo 'my debug output'; 
flush(); 
相关问题