查看助手,局部视图或其他东西

时间:2012-05-07 18:36:02

标签: zend-framework zend-form

我是Zend Framework的新手,我对我要做的事情有疑问。

我正在处理的应用程序的大多数页面的主要内容将包含一个或多个需要设置相同样式的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>

但那不是干。

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

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

1 个答案:

答案 0 :(得分:4)

您可能需要考虑使用partials: 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');
...

希望这有帮助。