Zend MVC - я повторяю некоторые результаты тестовой отладки, но кажется, что они подавлены и не отображаются - PullRequest
1 голос
/ 08 января 2010

Я занимаюсь разработкой приложения Zend MVC.

Иногда мне нравится выводить какой-то текст только для быстрой и грязной отладки. * например 1003 *

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

Я могу повторить 'debug-text' в моей начальной загрузке> Но, когда текст отображается в моей модели или контроллерах, он НЕ отображается на выходе.

Я использую Zend 1.9.5 и использую Zend Layout с MVC


Есть ли где-нибудь параметр, который подавляет весь вывод '' non-view script rendered ''?

Ответы [ 4 ]

1 голос
/ 08 января 2010

Вы также можете использовать die () вместо echo :), это будет работать. Или используйте Zend_Log и выходной модуль записи следующим образом:

$writer = new Zend_Log_Writer_Stream('php://output');
1 голос
/ 08 января 2010

Выходная буферизация может быть виновником. Попробуйте:

echo 'my debug output';
flush();
0 голосов
/ 04 ноября 2010

Я отвечаю на этот вопрос, потому что я вернулся к тому же коду 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 (автоматически назначается макетом из сегмента ответа «по умолчанию»). Поскольку я не повторял этот сегмент, он вел себя так, как будто эхо-текст подавлялся.

Чтобы решить эту проблему, я просто должен был убедиться, что я повторяю сегмент контента.

* * 1 022 * т.е. 1023 *
<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 голосов
/ 08 января 2010

Если viewRendering включен, он, вероятно, ищет представление / scripts / для отображения и, возможно, не отображает ваши операторы echo.

Вы можете попробовать отключить viewRendering от данного контроллера и посмотреть, поможет ли это.

viewRenderer->setNoRender()
...