2011-03-06 14 views
1

我试图通过在布局中调用的视图帮助器来激活jQuery。在视图帮助器中启用jQuery与ZendX_JQuery一起使用

的问题是,jQuery是已经叫布局的范围,从而使包括文件,它是在视图助手定义之前。

这里是我的脚本:

Layout.phtml

<?php echo $this->doctype(); ?> 
<html> 
<head> 
    <?php echo $this->headTitle() ?> 
    <?php echo $this->headLink()->appendStylesheet('/css/base.css') ?> 
    <?php echo $this->headMeta() ?> 
    <?php echo $this->headStyle() ?> 
    <?php echo $this->jQuery() ?> 

</head> 
<body> 
[...] 
    <div id="droite" class="column grid_4"> 
     <!-- Column 2 start --> 
     <?php echo $this->render('partials/droite.phtml'); ?> 
     <!-- Column 2 end --> 
    </div> 
</body> 
</html> 

谐音/ droite.phtml

<?=$this->rolelinks(); ?> 

My_View_Helper_Rolelinks

<?php 

class My_View_Helper_Rolelinks extends Zend_View_Helper_Abstract 
{ 

    public function rolelinks() 
    { 
     if (Model_User::hasIdentity()) { 
      $role = Model_User::getRole(); 
      if ($role === 'admin') { 
       return $this->view->partial('partials/droite_admin.phtml'); 
       return; 
      } 
     } else { 
      return ''; 
     } 
    } 
} 

泛音/ droite_admin.phtml

<?php 
$this->jQuery() 
    ->UiEnable() 
    ->addJavascriptFile('/js/jquery.ui.datepicker-fr.js') 
    ->addJavascriptFile('/js/onload.js'); 
?> 

<div id="calendar"></div> 

大二

不知道这是做到这一点的正确方法,但主要想法是检查用户是否为admin,以启用jQuery并显示日期选择器(日历)。

在此先感谢您的帮助。

+0

小心使用ZendX_JQuery得多,因为是关于讨论[不安](http://zend-framework-community.634137.n4.nabble.com/Discontinuing-Maintenance-of-ZendX-JQuery- Suggest-drop-for-2-0-td3221855i40.html)它。 – Marcin 2011-03-07 00:45:51

+0

即使不使用ZendX_JQuery,问题是要知道如何使用布局脚本中调用的Zend_View_Helper激活jquery(即修改我的''元素)。 – ant1j 2011-03-07 14:33:45

回答

0

你可以尝试,以检查是否jQuery是在布局已启用,以避免双重包容。

<head> 
    <?php echo $this->headTitle() ?> 
    <?php echo $this->headLink()->appendStylesheet('/css/base.css') ?> 
    <?php echo $this->headMeta() ?> 
    <?php echo $this->headStyle() ?> 

    <?php if (! $this->jQuery()->isEnabled()) { 
     echo $this->jQuery(); 
    } ?> 
</head> 
+0

不幸的是,目前我根本没有收录!据我所知,我需要在视图脚本本身中定义我的View_Helper的“动作”(启用jQuery),因为之后呈现布局脚本。 – ant1j 2011-03-07 14:15:38