有可能实现吗? 如果在视图中是控件的结果,我的视图帮助程序工作正常。但是我希望有一些dinamic布局,例如,根据我所处的状态渲染一个jquery菜单。
如果我从布局中调用帮助器,那么headScript永远不会回应我在帮助器中执行的appendScript命令。
谢谢!
答案 0 :(得分:1)
你有几个选择。
做你想做的最简单的方法是使用inlineScript()视图助手并将其添加到引导程序中的视图或直接添加到布局脚本中。 inlneScript()帮助程序的工作方式与headScript()帮助程序的工作方式相同,但是将代码放在标记中。我有时会使用inlineScript()帮助程序将配置数据传递给音频和视频播放器。
或者,您可以使用视图帮助程序构建自己的placeholder,并在引导程序中初始化它。
这是一个呈现菜单的自定义placeholder的简单示例:
引导程序:
protected function _initMenus() {
//get view object
$view = $this->getResource('view');
//assign the id for the menus...
$view->mainMenuId = 4;
$view->adminMenuId = 5;
}
布局:
<?php
$this->layout()->adminMenu = $this->action(
'render', 'menu', null, array('menu' => $this->adminMenuId))
?>
<div id="adminMenu">
<!-- Render the placeholder -->
<?php echo $this->layout()->adminMenu ?>
</div>
这个占位符只是使用action()帮助器来调用renderAction(),但是你可以用占位符做的事情受到想象力的限制。
答案 1 :(得分:0)
我不认为这是可能的,因为如果在布局中调用帮助器,它可能会在headScript帮助程序运行后调用headScript。使其工作的唯一方法是确保在headScript调用之前在布局顶部附近调用助手。