Zend MVC - Ben bazı test debug çıktılarını echo ama suppresed gibi görünüyor ve görünmüyor

4 Cevap php

Zend MVC uygulama geliştiriyorum.

Bazen sadece hızlı ve kirli hata ayıklama için bazı metin yankı istiyorum. ör

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

Ben metin benim model veya çıkışı işlenen DEĞİLDİR denetleyicileri yankılandı, benim bootstrap de 'hata ayıklama metin' echo> Ama olabilir.

Ben Zend 1.9.5 kullanıyorum ve MVC ile Zend Düzeni kullanıyorum


'' Çıkışı verilen tüm'' non-view komut bastıran bir ayarı bir yerde var mı?

4 Cevap

Ben 10 ay sonra, tekrar aynı kod geldi ve beni tekrar karıştı çünkü ben bu soruya cevap veriyorum.

Bir Standart Modül, İndeks Kontrolörü ve Dizin Eylem bağlamında oldu.

Ben kodunda neler olduğunu görmek için hızlı bir yol gibi bazı basit metin yankı istedim:

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');
  }

Sorun - yankılandı metin sadece yukarı gösteren değildi.

Bu bir değil, diğer denetleyicileri çalıştı, ama. Bu beni deli ediyordu.

- Şimdi ben sorunu çalıştık.

Ben bu özel kontrol eylemi ... bir 'ana sayfa düzeni' için özel bir düzen kullanarak edildi.

Benim ana sayfa düzeninde herhangi bir görünümü senaryo oluşturma değildi. Tüm içerik ve tasarım düzen oldu. Ana sayfa özel, benzersiz bir sayfa olduğundan, bir iki adım görünüme ayırmak gerek yoktu. Bu nedenle ben bir görünüm komut dosyası ihtiyacı için bir neden yoktu. Ama şikayet gelen ZF tutmak için bir 'dizin \ index.phtml \ Defa \ komut' yarattı. Ben, ancak benim düzeninde işlemek değil - gerekli değildi çünkü.

Herhangi yankılandı çıkış layout()->content (otomatik 'varsayılan' tepkisi segmentinde düzeni tarafından atanan) yakalanır. Bu segment dışarı yankılanan değildi çünkü yankılandı metin bastırılmış halde sanki, o davrandım.

Sorunu çözmek için, ben sadece ben içerik segmentinde dışarı yankılanıyordu emin olmak zorundaydı.

yani

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

olan, benim hata ayıklama metin çok yankılanan ile ... gibi kılacaktır:

... my home page html...
<h1>hello world</h1>
... my home page html...      

Ayrıca yerine yankı die () kullanabilirsiniz :) çalışacaktır. Ya Zend_Log ve bu gibi çıktı yazar kullanın:

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

Çıktı tamponlama suçlu olabilir. Deneyin:

echo 'my debug output';
flush();

ViewRendering açıksa, muhtemelen işlemek için / görünüm / komut arıyor ve muhtemelen yankı ifadeleri görüntüleniyor değil.

Eğer verilen kontrolör kapalı viewRendering açmak için denemek ve eğer yardımcı olur görebiliyordu.

viewRenderer->setNoRender()