在某种程度上,组件槽有点类似与局部模板,只是运用的作用上有所不同,组件槽可以用于面包屑型的导航、上下文相关的导航,还有各种动态插入。作为组件,它们可以用在全局模板、普通模板,甚至是在其他的组件里。
如何载入组件槽?
<?php include_component_slot('sidebar') ?>
如何在myapp/config/view.yml里定义sidebar组件槽的默认组件
default:
components:
sidebar: [bar, default]
这个方法会显示位于modules/bar/templates/目录下的_default.php局部模板文件。
现在我们拿实际的例子,来说明一下,具体应该怎么应用组件槽。
在myapp/modules/user/config/view.yml里给sidebar组件槽指定不同于默认值的值
all:
components:
sidebar: [bar, user]
sidebar槽使用的组件,该文件位于:modules/bar/actions/components.class.php
class barComponents extends sfComponents
{
public function executeDefault()
{
}
public function executeUser()
{
$test = 'Hello World';
//这里你可以获得一些数据,或者其他,便于在组件槽中的显示。例如
$user = UserPeer::getUser();
$this->user = $user;
}
}
在sidebar组件槽的局部模板,该文件位于: modules/bar/templates
// _user.php
<p>Name: <?php echo $user->getName(); ?></p>
这里整个组件槽的应用的过程就是这样了。
如果你在某个模块里想暂停使用一个组件,只要再声明一个空的模块/组件定义就可以了。
例如在view.yml里取消一个组件槽
all:
components:
sidebar: []
参考官网symfony
