Лучший способ начать использовать jQuery в приложении Zend Framework 1.9? - PullRequest
21 голосов
/ 24 октября 2009

Я хочу начать работать с jQuery в своем приложении Zend Framework, но не уверен, какой из них лучший для начала. Я знаю, что мог бы включить библиотеку jQuery, как любую другую библиотеку javascript, но каковы преимущества использования ZendX_JQuery и какие шаги необходимо предпринять, чтобы начать использовать его в моем приложении Zend Framework 1.9?

Ответы [ 6 ]

33 голосов
/ 24 октября 2009

Мне удалось заставить работать jQuery в моем проекте 1.9.4, выполнив следующие действия:

Шаг 1: Скопируйте каталог ZendX в каталог library . ZendX можно найти в каталоге extras / library в вашей загрузке Zend Framework.

Шаг 2. Загрузите jQuery и библиотеку jQuery UI с jqueryui.com . Я выбрал тему «Легкость пользовательского интерфейса».

Шаг 3. Извлеките загруженный файл и переименуйте jquery-ui-1.7.2 в jquery и перейдите в каталог public / js .

Шаг 4. Добавьте эти строки в файл bootstrap :

protected function _initViewHelpers()
{
    $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/js/jquery-1.3.2.min.js')
        ->setUiLocalPath('/js/jquery/js/jquery-ui-1.7.2.custom.min.js');
}

Шаг 5. Теперь добавьте помощник вида jQuery в ваш макет файл:

<head>
    <?php echo $this->jQuery(); ?>
</head>

Шаг 6. Чтобы проверить, что у вас все работает, добавьте эту строку в один из ваших сценариев просмотра :

Pick your Date: <?php echo $this->datePicker("dp1", '', array('defaultDate' => date('Y/m/d', time()))); ?>

Теперь, если вы откроете эту страницу в своем браузере, должно появиться текстовое поле. Вы сможете щелкнуть текстовое поле, в котором автоматически появится календарь, стилизованный под тему «Легкость пользовательского интерфейса».

10 голосов
/ 02 ноября 2009

Один маленький Гоча :
Вы должны добавить папку ZendX в каталог library - тот, в котором также есть каталог Zend .

[your/lib/path]
|
+-Zend
|  |
|  +-(the full thing)
|
+-ZendX
|  |
|  +-JQuery, Db, Console, ...

Если вы пропустите добавление ZendX в каталог library , вы получите множество сообщений об ошибках, таких как:

<b>Fatal error</b>:  Uncaught exception 'Zend_Loader_PluginLoader_Exception'  
with message 'Plugin by name 'JQuery' was not found in the registry; 
used paths: ZendX_JQuery_View_Helper_: ZendX/JQuery/View/Helper/
Zend_View_Helper_: Zend/View/Helper/: .....

Еще один маленький Гоча :
В коде, представленном Эндрю выше, обратите внимание на выделенные важные слова:

Now add the jQuery view helper to your <b><i>layout</i></b> file:
<head>
    <? php echo $this->jQuery(); ?>
</head>

<b>To test</b> that you have everything working, add this line <b>to one of your <i>view scripts</i></b>:  
<code>
Pick your Date: <?php echo $this->datePicker("dp1", ..... 
</code>

Хотя $this->jQuery() должен входить в файл layout , чтобы все страницы получали функциональность jquery, фактический код jQuery должен идти в файл просмотра сам по себе - application/views/scripts/yourcontroller/youraction.pthml - это не работает в макете только с этим простым кодом .

8 голосов
/ 30 июля 2010

Решение ->

protected function _initView()
{
    $view = new Zend_View();
    $view->doctype('XHTML1_STRICT');
    $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
    $view->headTitle()->setSeparator(' - ');
    $view->headTitle('IMR - BI System');
    $view->env = APPLICATION_ENV;
    $view->baseUrl = Zend_Registry::get('config')->root_path;

    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
    $view->jQuery()->addStylesheet($view->baseUrl . '/js/jquery/css/south-street/jquery-ui-1.8.2.custom.css');
    $view->jQuery()->setLocalPath($view->baseUrl . '/js/jquery/js/jquery-1.4.2.min.js');
    $view->jQuery()->setUiLocalPath($view->baseUrl .'/js/jquery/js/jquery-ui-1.8.2.custom.min.js');
    $view->jQuery()->enable();
    $view->jQuery()->uiEnable();
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
    $viewRenderer->setView($view);
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

    return $view;
}

Я только что переместил свой код с _initViewHelpers на _initView

и у меня это работает.

6 голосов
/ 30 декабря 2009

Просто хотел добавить, что вы должны (или, по крайней мере, мне пришлось) включить компоненты jquery и jquery в функции _initViewHelpers:

$view->jQuery()->enable()
            ->uiEnable();
3 голосов
/ 05 марта 2010

Как user117640 sad,

Мне пришлось включить jQuery и пользовательский интерфейс, это можно сделать в:

bootstrap:

//it will enable for all views
$view->jQuery()->enable()->uiEnable();

controller :: someAction:

//JQ enabled for particular view)
$this->view->jQuery()->enable()->uiEnable();

view someAction.phtml:

//JQ enabled for particular view
<?php $this-jQuery()->enable()->uiEnable(); ?>
2 голосов
/ 24 ноября 2009

включите это в ваш файл начальной загрузки

$view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
$view->jQuery()->addStylesheet('/Your Public Path/js/jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css')
               ->setLocalPath('/Your Public Path/js/jquery/js/jquery-1.3.2.min.js')
               ->setUiLocalPath('/Your Public Path/js/jquery/js/jquery-ui-1.7.2.custom.min.js');

Добавьте это в ваш макет

<head>
    <?php echo $this->jQuery(); ?>
</head>

и используйте функции пользовательского интерфейса jQuery в вашем файле вида: Укажите свою дату:

<?php echo $this->datePicker("dp1", '', array('defaultDate' => date('Y/m/d', time()))); ?>
...