Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在standalone\Zend\View中使用布局setRoot() 我需要什么_Php_Zend Framework_Model View Controller_Zend Framework2_Zend View - Fatal编程技术网

Php 在standalone\Zend\View中使用布局setRoot() 我需要什么

Php 在standalone\Zend\View中使用布局setRoot() 我需要什么,php,zend-framework,model-view-controller,zend-framework2,zend-view,Php,Zend Framework,Model View Controller,Zend Framework2,Zend View,我需要一个小型站点的模板引擎,我决定尝试使用\Zend\View。但我并没有使用Zend框架本身 因此,基本上我希望在Zend之外的自定义脚本中进行一些数据处理,然后将变量传递到\Zend\View中,并使其呈现我的模板 我试过的 我指的是以下手册:。基本实现(其中我仅使用\Zend\View\Renderer\PhpRenderer和\Zend\View\Model\ViewModel)按预期工作。但是,当我尝试更复杂的东西时,例如使用公共布局时,我会遇到错误 如果我做对了,可以嵌套\Zend

我需要一个小型站点的模板引擎,我决定尝试使用
\Zend\View
。但我并没有使用Zend框架本身

因此,基本上我希望在Zend之外的自定义脚本中进行一些数据处理,然后将变量传递到
\Zend\View
中,并使其呈现我的模板

我试过的 我指的是以下手册:。基本实现(其中我仅使用
\Zend\View\Renderer\PhpRenderer
\Zend\View\Model\ViewModel
)按预期工作。但是,当我尝试更复杂的东西时,例如使用公共布局时,我会遇到错误

如果我做对了,可以嵌套
\Zend\View\Model\ViewModel
s,并且我可以使用预定义的占位符()调用子占位符。但是应该有一个主要的
ViewModel
作为根(),它将包含带有Doctype的框架HTML页面,以及我传递给
headTitle()
headMeta()
等的内容

我试图创建一个viewModel,使用
setTemplate()
将它指向我的根布局,然后将它传递给
setRoot()
函数,但它不起作用。我尝试在代码中搜索该函数,并在/Zend/View/Helper/ViewModel.php中找到了它。它采用
Zend\View\Model\ModelInterface
的实例,而不是
\Zend\View\Model\ViewModel
的实例。但是,当我尝试创建一个新的ModelInterface并为其设置模板时,它会让我感到困惑

致命错误:无法实例化接口Zend\View\Model\ModelInterface

它变得过于复杂,我无法理解

代码如下: 我得到的是: 致命错误:未捕获异常“Zend\View\exception\RuntimeException” 带有消息“Zend\View\Helper\Layout::getRoot:无视图模型” 当前在渲染器中注册为root用户 Zend/View/Helper/Layout.php:64堆栈跟踪:

0 Zend/View/Helper/Layout.php(37):Zend\View\Helper\Layout->getRoot()

1[内部函数]:Zend\View\Helper\Layout->\uuu invoke()

2 Zend/View/Renderer/PhpRenderer.php(399):调用用户函数数组(对象(Zend\View\Helper\Layout),数组)

3视图/layout.phtml(16):Zend\View\Renderer\PhpRenderer->\uu调用('layout',Array)

phtml(16):Zend\View\Renderer\PhpRenderer->layout()

5 Zend/View/Renderer/PhpRenderer.php(506):包括(“…”)

6 zendviewtest.php(32):Zend\View\Renderer\PhpRenderer->render(对象(Zend\View\Model\ViewModel))

在第64行的Zend/View/Helper/Layout.php中抛出7{main}

我相信这是因为
$this->layout()
引用。当我拆下那个部件时,它开始正常工作

但是我认为
$this->layout()
是必要的,因为这是传递页面内容的自然方式。如果我删除它并使用普通的
setVariable('content',…)
它将打破Zend惯例,对吗

我还想使用一些嵌套布局,如页眉、页脚等,但我不知道如何实现。我试着按关键字和错误代码进行搜索,但找不到任何有用的东西。请告知

更新处理和显示页面内容的最佳方式是什么?由于我不能使用文档中建议的
echo$this->layout()->内容
部分,我应该用什么替换它?

layout()
返回您没有的
布局视图模型。
要在另一个视图脚本中呈现其他视图脚本,请使用
局部视图辅助程序

print $this->partial('path/to/other/view/script',array('param1'=>'param1'));
zend framework中的布局在视图管理器的配置中定义,并由控制器处理,因为您手动执行这些步骤,不需要布局。。。只需设置变量,如
$viewModel->setVariable('param1','param1Value')
并在视图中使用它,如
$this->param1

但是我认为$this->layout()是必要的,因为它是自然的 传递页面内容的方式。如果我把它取下来用普通的 setVariable('content',…)它将打破Zend惯例,对吗


你完全错了,我的应用程序完全基于zend mvc,我从未使用过
$this->layout()
,正如我所说的
$this->layout()
返回视图管理器从layout.phtml文件创建的
布局视图模型,您当前拥有的视图脚本就是布局。setVariable('content',…)是您可以继续操作的唯一方法,没有其他方法可以继续操作…

谢谢您回答我的问题。那么,处理页面内容的最佳方式是什么?由于我无法使用文档中建议的echo
$this->layout()->content
部分,我应该用什么替换它?在何处以及如何设置视图的
content
变量?
<?php
$this->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
$this->headTitle()->setSeparator(' - ');
?>
<!DOCTYPE html>
<html> 
    <head>
        <?php echo $this->headMeta(); ?> 
        <?php echo $this->headTitle(); ?>
        <?php echo $this->headLink() . "\n" ?>
        <?php echo $this->headscript(). "\n"?>
     </head>
    <body>
        <div id="nav">
            <?php echo $this->layout()->nav ?>
        </div>
        <div id="content">
            <?php echo $this->layout()->content; ?>
        </div>
    </body>
</html>
print $this->partial('path/to/other/view/script',array('param1'=>'param1'));