繁体   English   中英

ZF2-动态ViewHelper

[英]ZF2 - Dynamic ViewHelper

我想创建一个视图助手,它应该返回类似这样的HTML:

<div class="panel panel-default">
    <div class="panel-body">
        :: Here is my content ::
    </div>
</div>

计划是像下面这样调用它,其中参数应该是我的配置中的一个键,它定义了一个视图助手类来生成面板的内容:

<?php 
    echo $this->panel('test');

    $config = [
        'view_helpers' => [
            'factories' => [
                'Panel' => 'Application\View\Helper\Factory\PanelFactory',
                'Test' => 'Application\View\Helper\Factory\TestFactory'
            ]
        ],
        'panels' => [
            'test' => 'Test'
        ]
    ];
?>

因此,我可以将自定义视图助手的所有内容加载到面板中,但是我必须在面板视图助手中注入视图助手管理器才能从配置中加载所需的视图助手。 那是正确的还是有更好的解决方案?

也许您应该看看ZF2局部视图 如果我没有记错的话,局部视图助手似乎正在做您想要的事情。

您定义一个模板( panel.phtml ):

<div class="panel panel-default">
    <div class="panel-body">
        <?php echo $this->content ?>
    </div>
</div>

在要输出面板局部的视图中:

$this->partial('panel.phtml', array(
    'content' => 'Whatever content you prefer (can also be another partial)'
);

您可以像在视图帮助器配置中的模板映射中注册其他任何视图一样注册局部变量:

'view_manager' => array(
    'template_map' => array(
        'layout/layout'         => __DIR__ . '/../view/layout/layout.phtml',
        'header'                => __DIR__ . '/../view/layout/header.phtml',
        'footer'                => __DIR__ . '/../view/layout/footer.phtml',
        'error/404'             => __DIR__ . '/../view/error/404.phtml',
        'error/index'           => __DIR__ . '/../view/error/index.phtml',
        'panel'                 => __DIR__ . '/../view/partial/panel.phtml',
        'test'                  => __DIR__ . '/../view/partial/test.phtml',
    )
)

似乎是您想要实现的简单解决方案。
还是您还有其他要求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM