Zend Framework 2 で本体を設定する方法はありますか? Zend Framework 1 では、このようにすることができました
$this->getResponse()->setBody('Hello World')
Zend Framework 2 でコンテンツを設定する方法を見つけましたが、これもレイアウトを上書きしてしまい、それは私が望むものではありません。
Zend Framework 2 で本体を設定する方法はありますか? Zend Framework 1 では、このようにすることができました
$this->getResponse()->setBody('Hello World')
Zend Framework 2 でコンテンツを設定する方法を見つけましたが、これもレイアウトを上書きしてしまい、それは私が望むものではありません。
これを行う別の方法があります...。
<?PHP
namespace ModuleName\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
protected $helloWorldTable;
public function indexAction()
{
return new ViewModel(array(
'foo' => 'Hello World From Zend Framework 2!',
));
}
}
<?PHP
$this->headTitle('Some Site...');
echo "$hello";
?>
<html lang="en">
<head>
<meta charset="utf-8">
<?php echo $this->headMeta()->appendName('viewport', 'width=device-width, initial-scale=1.0') ?>
<!-- Le styles -->
<?php echo $this->headLink(array('rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon', 'href' => $this->basePath() . '/images/favicon.ico')) ?>
<!-- Scripts -->
<?php echo $this->headScript()->prependFile($this->basePath() . '/js/html5.js', 'text/javascript', array('conditional' => 'lt IE 9',))
->prependFile($this->basePath() . '/js/bootstrap.min.js')
->prependFile($this->basePath() . '/js/jquery.min.js') ?>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="<?php echo $this->url('index') ?>"><?php echo $this->translate('Spamus') ?></a>
<div class="nav-collapse collapse">
<ul class="nav">
<li class="active"><a href="<?php echo $this->url('index') ?>"><?php echo $this->translate('Home') ?></a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container">
<?php echo $this->content; ?>
<hr>
<footer>
<p>© 2012 - 2013 by YourSite <?php echo $this->translate('All rights reserved.') ?></p>
</footer>
</div> <!-- /container -->
<?php echo $this->inlineScript() ?>
</body>
</html>
コントローラーで応答本文を変更した場合、zf2 MvcEvent::EVENT_RENDER がトリガーされると、新しい応答本文が再構築されます。正しい方法は、Response body AFTER MvcEvent::EVENT_RENDER を変更することです。
これをコントローラーに追加します。
$this->getServiceLocator()->get('Application')->getEventManager()->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER, function($event){
$event->getResponse()->setContent('foobar');
}, -10000);
私はついに解決策を得ました。レイアウトのコンテンツを変更するには、コントローラーのアクションを入力するだけです
$this->layout()->content = 'foobar';