【问题标题】:Zend Layout render some parts on every pageZend Layout 在每个页面上渲染一些部分
【发布时间】:2011-09-24 05:42:48
【问题描述】:

我是 Zend 框架的新手,我正在尝试了解他们想要如何渲染事物。 我正在创建一个网站,我有一个从数据库动态创建的菜单。如果我调用正确的操作,我会正确看到 menu.phtml 视图。

现在我想在每个页面上呈现这个 menu.phtml,但我不知道如何做到这一点。我读到了占位符、助手……但似乎不明白。

我想我必须调用该操作来生成 menu.phtml,渲染它并将其放入 占位符我可以从我的 layout.phtml 调用,但我不知道我是如何做到的。

提前致谢。

解决方案:

在 layout.phtml 中我添加了以下行:

<?php echo $this->action('menu',
                            'page',
                            null,
                            array());?>

这将访问 PageController 中的 menuAction 并运行它。变量将被填充,所需的代码将在此处渲染 menu.phtml 视图脚本之前执行。

【问题讨论】:

    标签: php model-view-controller zend-framework layout views


    【解决方案1】:

    你可以这样做:

    假设您在一些名为“header”的 div 中显示菜单。

    <div id='header'><?= $this->render('menu.phtml'); ?></div>
    

    您必须在工作控制器中添加正确的路径才能访问 menu.phtml。

    public function init() {
    
            $this->view->addScriptPath(APPLICATION_PATH . '/views/scripts/');
    }
    

    如果你想将值传递给 menu.phtml 文件。

    <?php echo $this->partial('page/menu.phtml', array('var1'=>'value1','var2'=>'value2') ); ?>
    

    【讨论】:

    • 这个问题是我无法访问 menu.phtml,因为它位于 views/scripts 文件夹中,而布局位于 layouts/scripts/ 文件夹中。我尝试使用 ../../ 来访问它,但我收到一条错误消息:“请求的脚本可能不包括父目录遍历”
    • 好的,现在错误已经消失了,但什么也没有出现。这就是我所做的:在一个名为 AlbumController.php 的控制器中,我添加了 addScriptPath 行。在 layout.phtml 中,我添加了渲染('menu.phtml')。当我转到 mywebsite/Album 时,它会显示专辑页面,但 menu.phtml 没有显示。
    • 你能显示有问题的 layout.phtml 代码吗?另请根据您的目录结构验证您的路径。
    • 这是 layout.phtml doctype() ?> w3.org/1999/xhtml"> 测试 headLink()->appendStylesheet('/css/global.css') ?>
      layout()->content; ?>
      `
    • 使用&lt;?php echo $this-&gt;render('page/menu.phtml'); ?&gt;
    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多