Включите jQuery с помощью ZendX_JQuery в помощнике вида - PullRequest
1 голос
/ 07 марта 2011

Я пытаюсь активировать 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>

partials / 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 '';
        }
    }
}

partials / droite_admin.phtml :

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

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

Итак.

Не уверен, что это правильный способ сделать это, но основная идея состоит в том, чтобы проверить, является ли пользователь администратором для включения jQuery, и отобразить средство выбора даты (календарь).

Заранее спасибо за вашу помощь.

1 Ответ

0 голосов
/ 07 марта 2011

Вы можете попробовать проверить, включен ли 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>
...