【问题标题】:Zend Framework 1 headScript from within a partial rendered from the controllerZend Framework 1 headScript 来自控制器的部分渲染
【发布时间】:2014-02-06 20:48:33
【问题描述】:

我试图在单击选项卡时动态添加内容,方法是使用 jQuery get 从控制器回显视图部分,数据返回很好,但我在该部分中所做的任何 headScript() 声明都没有被设置在页眉中,从该视图调用的其他部分中所做的声明 DO 使 appendFile 操作成功。我假设这是因为在页面加载时发生了一些 preDispatch,它通过部分内容并将 headScript 项目附加到标题中,当我从 ajax get 动态加载部分代码时没有发生:

$.ajax({
    url: sourceUrl,
    method: 'get',
    beforeSend: function(){
        $('a[href="'+href+'"]').addClass('load').tab('show');
    },
    success: function(data){
        console.log(data);
        $("#"+tabID+"-content").html(data);
        $('a[href="'+href+'"]').removeClass('load');
    },
    error: function(data){
        $("#"+tabID+"-content").html('There was an issue loading the tab. Please try again.');
        $('a[href="'+href+'"]').removeClass('load');
    }
});

这调用了一个没有布局的动作,只是简单地回显了一个部分:

$this->_helper->_layout->disableLayout();
echo $this->view->partial('device/pool-graph.phtml',
                    array('id' => $id));

任何<?php $this->headScript()->appendFile(); ?> 操作似乎都没有将javascript 附加到标头,除了在部分中包含基本的<script src='/js/script.js'> 标记之外,还有其他方法吗?我不想那样做。

【问题讨论】:

    标签: zend-framework


    【解决方案1】:

    head 脚本助手中不涉及 preDispatch,对助手的调用只是“排队”脚本标签,然后通过类似 <?=$this->headScript()?> 的 echo 调用输出,您可能在布局中具有这些标签。由于您的控制器操作正在禁用布局,因此此调用永远不会发生。

    您说您不想在部分中输出脚本标签,但这是解决问题的最简单方法。如果你想避免这种情况,因为你在应用程序的其他地方使用了部分,一个稍微混乱的解决方案可能是在你的部分之后使用帮助器输出脚本标签:

    $this->_helper->_layout->disableLayout();
    echo $this->view->partial('device/pool-graph.phtml',
                    array('id' => $id));
    echo $this->view->headScript();
    

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 2015-10-25
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多