Пехлеви headScript () и appendFile, не работающий как ожидалось

У меня есть проблема, пытающаяся добавлять использование файла JavaScript headScript()->appendFile('file name') с Пехлеви. У меня есть своя установка расположения как это:

    <?= $this->headScript()
    ->prependScript( 'BASE_URL = "' . $this->baseUrl() . '";' )
    ->appendFile( $this->baseUrl('js/lib/jquery/jquery-1.4.2.min.js') )
    ->appendFile( $this->baseUrl('js/admin.js') );

?>

Затем в моем контроллере я пытаюсь добавить дополнительный js файл только для этой страницы, как:

    $this->view->headScript()->appendFile( 'another/js/file.js' );

Этот файл должен быть добавлен к тому, что уже является установкой в расположении. Однако этот файл добавляется перед другими 'appendFile' файлами. Я также попробовал

$this->headScript()->offsetSetFile(999, '/js/myfuncs.js');

Но это все еще добавляет файл перед другими файлами. Это не то, как я ожидал бы, что это будет работать, особенно при использовании offsetSetFile метода. Как я могу добавить этот файл после других файлов?Спасибо.

12
задан Ryan 12 March 2010 в 17:21
поделиться

3 ответа

Я заметил, что если я «добавлю» все файлы в макет, я могу использовать appendFile в своем контроллере, и он появится после них. К сожалению, тогда мне приходится перечислять все мои файлы JS в обратном порядке в макете (поскольку они добавляются сами к себе). Я бы очень хотел навести порядок и просто иметь возможность добавлять в свой стек макетов.

1
ответ дан 2 December 2019 в 06:26
поделиться

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

// in your bootstrap
protected function _initHeadScript()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');

    $view->headScript()->appendFile('another/js/file.js');
}

// as a plugin
class My_Plugin_HeadScriptPlugin extends Zend_Controller_Plugin_Abstract
{
    public function routeStartup(Zend_Controller_Request_Abstract $request)
    {
        $view = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view;

        if($request->getModuleName() == 'foo')
        {
            $view->headScript()->appendFile('another/js/file.js');
        }
    }
}
0
ответ дан 2 December 2019 в 06:26
поделиться

На самом деле, вам не нужно получать baseUrl, потому что ZF уже делает это за вас. Вам просто нужно обратить внимание на путь. Не используйте первый слэш! иначе ZF вернет удаленный адрес.

Just use '$this->_view->headLink()->appendStylesheet('css/main.css');'

0
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: