Zend Framework: Как сгенерировать JavaScript только один раз? - PullRequest
0 голосов
/ 28 сентября 2010

Я создаю пользовательский элемент формы Zend, который потребует некоторого JavaScript. Я могу добавить нужный мне JavaScript следующим образом:

/**
 * Renders the javascript to the view.
 */
protected function _generateJavaScript()
{
    $this->view->headScript()->captureStart(); ?>

        $(document).ready(function(){
            alert('hello');
        });

    <?php $this->view->headScript()->captureEnd();
}

Однако, если этот пользовательский элемент формы используется несколько раз, идентичный JavaScript будет появляться несколько раз. Есть ли способ визуализации JavaScript только один раз?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2010

Не используйте захват в этом случае.

Помощник HeadScript достаточно умен, чтобы обнаруживать дубликаты, но вы должны использовать appendScript() или appendFile()

Для функций загрузки jQuery используйте $this->jQuery()->addOnload('//yourcode');

0 голосов
/ 29 сентября 2010

Возможно, вы сможете сделать что-то вроде

protected function _generateJavaScript()
{
    if (!isset($this->view->scriptGenerated))
    {
        // generate the script, then...
        $this->view->scriptGenerated = true;
    }
}

, поскольку объекты PHP могут иметь "дополнительные" свойства.

Вы, очевидно, захотите выбрать лучшее имя, которое выиграетСтолкновение, если у вас есть несколько сценариев, использующих один и тот же шаблон.

В качестве альтернативы, вы можете иметь сценарий в файле.Похоже, appendFile не будет включать файл сценария более одного раза.Я не вижу сразу такой защиты для специальных сценариев.

protected function _generateJavaScript()
{
    $this->view->headScript()->appendFile('path/to/script.js');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...