Zend framework Zend框架:部分和占位符之间有什么区别

Zend framework Zend框架:部分和占位符之间有什么区别,zend-framework,partial,placeholder,Zend Framework,Partial,Placeholder,在Zend框架中,有人能解释部分和占位符之间的区别吗 根据我的理解,可以通过使用占位符和部分来呈现特定的模板/容器 在哪种情况下应该使用分部,占位符的最佳使用场景是什么?很简单,占位符用于在视图和布局之间保存数据,分部用于特定视图中执行特定任务。 请参阅参考资料中的这些摘录 77.4.1.6.占位符帮助器:占位符视图帮助器用于在视图脚本和视图实例之间保存内容。它也 提供了一些有用的功能,如聚合内容、捕获 查看脚本内容以供以后使用,并向脚本中添加前置和后置文本 内容(以及聚合内容的自定义分隔符)

在Zend框架中,有人能解释部分和占位符之间的区别吗

根据我的理解,可以通过使用占位符和部分来呈现特定的模板/容器


在哪种情况下应该使用分部,占位符的最佳使用场景是什么?

很简单,占位符用于在视图和布局之间保存数据,分部用于特定视图中执行特定任务。
请参阅参考资料中的这些摘录

77.4.1.6.占位符帮助器:占位符视图帮助器用于在视图脚本和视图实例之间保存内容。它也 提供了一些有用的功能,如聚合内容、捕获 查看脚本内容以供以后使用,并向脚本中添加前置和后置文本 内容(以及聚合内容的自定义分隔符)

77.4.1.5.局部辅助对象:局部视图辅助对象用于在其自身变量范围内呈现指定模板。主要用途是 对于可重用的模板片段,您无需担心 关于变量名冲突。此外,它们允许您指定 部分查看特定模块中的脚本

下面是一个简单的占位符示例,听起来像是您想要的。(保存数据)

[编辑]

我认为最好有一个占位符示例。此占位符是一个小型搜索表单,我在不同配置的多个控制器中的多个操作中使用。

在此配置中,此表单设置为仅搜索音乐艺术家,使用此占位符的控制器将有不同的setAction()路径、不同的标签,有时还有不同的占位符文本。我使用相同的表单搜索音乐和视频数据库。

如果你总是使用相同的设置,或者比我更感兴趣,可以将其设置为插件

//in the controller 
public function preDispatch() {
        //add form
        $searchForm = new Application_Form_Search();
        $searchForm->setAction('/admin/music/update');
        $searchForm->query->setAttribs(array('placeholder' => 'Search for Artist',
            'size' => 27,
        ));
        $searchForm->search->setLabel('Find an Artist\'s work.');
        $searchForm->setDecorators(array(
            array('ViewScript', array(
                    'viewScript' => '_searchForm.phtml'
            ))
        ));
        //assign form to placeholder
        $this->_helper->layout()->search = $searchForm;
    }
我在布局中使用占位符(也可以在任何视图脚本中使用)。占位符有值时呈现搜索表单,占位符无值时不呈现搜索表单。

//in the layout.phtml
<?php echo $this->layout()->search ?>
//在layout.phtml中
完整地说,下面是表单用作viewscript装饰器的部分

<article class="search">
    <form action="<?php echo $this->element->getAction() ?>"
          method="<?php echo $this->element->getMethod() ?>">
        <table>
            <tr>
                <th><?php echo $this->element->query->renderLabel() ?></th>
            </tr>
            <tr>
                <td><?php echo $this->element->query->renderViewHelper() ?></td>
            </tr>
            <tr>
                <td><?php echo $this->element->search ?></td>
            </tr>
        </table> 
    </form>
</article>


我认为在这里对您更有帮助的可能是自定义视图帮助程序,可能扩展现有的Zend\u view\u helper\u FormSelect类,或者创建一个自定义Zend表单元素,以满足您的需要。或者,位于常规位置的辅助脚本可能是最佳选择

谢谢你的解释。这两个用例都有简单的例子吗?我有一个要求,我需要填写一个国家下拉列表在不同的控制器以及模块。那么,将模板保存在一个地方并在模块和控制器之间重复使用的beast方法是什么呢?我想做的是从一个地方提供国家的动态数组,而不是从每个控制器的preDispatch提供。我的dropdown.phtml放在/application/views/scripts文件夹中,我想在我的不同模块和控制器中使用zend partial/placeholder帐户重用该phtml
//in the layout.phtml
<?php echo $this->layout()->search ?>
<article class="search">
    <form action="<?php echo $this->element->getAction() ?>"
          method="<?php echo $this->element->getMethod() ?>">
        <table>
            <tr>
                <th><?php echo $this->element->query->renderLabel() ?></th>
            </tr>
            <tr>
                <td><?php echo $this->element->query->renderViewHelper() ?></td>
            </tr>
            <tr>
                <td><?php echo $this->element->search ?></td>
            </tr>
        </table> 
    </form>
</article>