首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在布局中启用ZendX集成的Jquery

如何在布局中启用ZendX集成的Jquery
EN

Stack Overflow用户
提问于 2010-07-20 10:36:51
回答 4查看 2.6K关注 0票数 0

我试图理解为什么ZendX_JQuery在布局中直接使用时不能工作。在视图中,它运行得非常好:

  • 创建所需的代码
  • 将JQuery脚本放在head标记中

但是当在布局中使用时

  • 创建所需的代码
  • 不是在head标记中插入JQuery脚本吗?

这能否被克服,以及如何克服?如果有人能回答这件事,它为什么要这么做?

为了清楚地说明这一点,我想做的是:

代码语言:javascript
复制
    //layout.phtml file
    <head>
    <?php echo $this->jQuery();?>
    </head>
    <body>
<?php echo $this->ajaxLink("Like",

                    "/mod/instr/like/id/".$this->books['id'],

                    array('update' => '#ajaxed',
                    'beforeSend'=>'fadeout'
                    ));
?>
<?php echo $this->layout()->content; ?>
    </body

这意味着,我希望在布局中放置一个jQuery对象。我想直接将一些与jQuery相关的代码放在我的布局文件中,而不仅仅是允许为需要它的视图初始化jQuery的部分。

编辑: Ok,下面是引导程序中的init函数

代码语言:javascript
复制
    protected function _initJqueryLoad()
    {

        $view = new Zend_View();
     // $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper');
$view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
    $view->jQuery()->addStylesheet('/js/jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css')
        ->setLocalPath('/js/jquery/jquery.js')
        ->setUiLocalPath('/js/jquery/js/jquery-ui-1.7.2.custom.min.js');
ZendX_JQuery::enableView($view);
    }

我的布局文件在头中包含了以下内容:

代码语言:javascript
复制
    <?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/admin.css'); ?>
    <?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/form.css'); ?>
<?php 
echo $this->headScript()->prependFile('/js/JP.js','text/javascript','');?>
<?php echo  $this->jQuery(); ?>
</head>

因此,应该在使用此布局的每个视图中启用JQuery。运行在视图中但不在布局中的代码是:

代码语言:javascript
复制
<div id="ajaxed">
<? 
echo $this->ajaxLink("Like",

                    "/mod/instr/like/id/".$this->books['id'],

                    array('update' => '#ajaxed',
                    'beforeSend'=>'fadeout'
                    ));
                     echo $this->ajaxLink("Don't like",

                    "/mod/instr/hate/id/".$this->books['id'],

                    array('update' => '#ajaxed'));?>


</div>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-15 09:47:22

我在AJAXLINK也遇到了同样的问题。

链接是在布局中使用此助手生成的,但是JQUERY函数应该在头中执行AJAX调用。

如果我在视图中尝试同样的方法的话,一切都会很完美。

编辑:我最终在没有使用ajaxlink-助手的情况下手动地将ajax代码复制到布局中。

我在这里打开了一个bug报告:http://framework.zend.com/issues/browse/ZF-10317

票数 1
EN

Stack Overflow用户

发布于 2011-04-01 15:35:18

我发现,如果我在正文的末尾添加"echo $this->jQuery()“(即在ajax链接调用之后),它就能工作。基本上,问题是jquery助手在已经回显javascript之前不知道ajaxlink。

票数 1
EN

Stack Overflow用户

发布于 2010-07-20 16:11:00

最后编辑:我只是不明白这个问题。我可以在布局中很好地运行jquery代码(例如,我可以在layout.phtml中使用数据报警器)。而且你的ajaxLink也表现得很好。我从zendcast下载了示例代码,并将您的代码粘贴到布局中,并且运行正常。所以我不知道是什么不适合你,抱歉浪费了你的时间。

编辑:您是否尝试过添加

代码语言:javascript
复制
return $view;

在你完蛋的时候。通常,它的bette rto将从引导中的init方法返回此值。也许这就是为什么似乎什么都没有装载。

您所做的应该是有效的,所以您的代码一定有错误。查看这个关于集成Zendx的伟大教程,他所做的正是您想要的。JQuery

还发布了一些代码,以便我们知道什么可能是错误的。

顺便说一下,您的代码中有一个错误(与jquery无关)。如果您查看生成的代码,应该会看到所有样式表都是双倍的。正确的语法是:

代码语言:javascript
复制
<?php $this->headLink()->prependStylesheet($this->baseUrl().'/css/admin.css'); ?>
<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/form.css'); ?>

代码语言:javascript
复制
<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/admin.css')
           ->prependStylesheet($this->baseUrl().'/css/form.css'); ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3289102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档