3

我是 Zend Framework 的新手,我对我正在尝试做的事情有疑问。

我正在处理的应用程序的大多数页面的主要内容将包含 1 个或多个 div 元素,这些元素需要设置相同的样式。

这是我要生成的 HTML 示例:

<div id='admin-locations' class='panel'>
    <header class="panel-header">
        <h2>Locations</h2>
    </header>
    <div class='panel-content'>
        <div id='locations-table' class='google-vis-table'></div>
        <form id='locations'>
            ...
        </form>
    </div>
</div>

我知道我可以通过将表单推送到我的控制器中的视图脚本然后将此代码添加到我的控制器来轻松地做到这一点。

<div id='admin-locations' class='panel'>
    <header class="panel-header">
        <h2>Locations</h2>
    </header>
    <div class='panel-content'>
        <div id='locations-table' class="google_vis_table"></div>
        <?php 
            echo $this->formLocations;
        ?>
    </div>
</div>

但这不是 DRY。

我在这里使用的示例在其内容中有一个 Google 可视化表和一个 Zend 表单。有时面板需要包含一个表单。有时他们不会,所以我不认为表单装饰器是要走的路。所以基本上,面板的 id、面板标题文本和 div class='panel-content' 的内容需要是动态的。从面板到面板,其他一切都将保持不变。

我在这里最好的选择是什么?

4

1 回答 1

4

您可能要考虑使用部分:http: //framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.partial

例如,您可以有一个包含以下内容的admin-locations.phtml部分:

<div id='admin-locations' class='panel'>
    <header class="panel-header">
        <h2>Locations</h2>
    </header>
    <div class='panel-content'>
        <div id='locations-table' class="google_vis_table"></div>
        <?php echo $this->form; ?>
    </div>
</div>

现在,您可以简单地在视图中重复调用部分,无论是否提供表单:

...
echo $this->partial('admin-locations.phtml');
echo $this->partial('admin-locations.phtml', array('form' => $this->yourForm);
echo $this->partial('admin-locations.phtml');
...

希望这可以帮助。

于 2012-05-07T19:35:35.250 回答