Pergunta

Eu quero começar a trabalhar com jQuery no meu aplicativo Zend Framework mas não tenho certeza qual é a melhor maneira de começar. Eu sei que poderia incluir a biblioteca jQuery, tal como qualquer outra biblioteca javascript, mas quais são as vantagens de usar ZendX_JQuery, e quais são os passos necessários para começar a usá-lo no meu 1.9 aplicação Zend Framework?

Foi útil?

Solução

Eu era capaz de obter jQuery trabalho no meu projeto 1.9.4, seguindo estes passos:

Passo 1: Copie o diretório ZendX à sua biblioteca diretório. ZendX podem ser encontrados nos extras do diretório / biblioteca do seu download Zend Framework.

Passo 2: Baixar jQuery ea biblioteca jQuery UI de jqueryui.com . Eu escolhi o tema UI Lightness.

Passo 3: Extraia o download e renomear jquery-ui-1.7.2 para jQuery e movimento à sua pública / js diretório

.

Passo 4: Adicione estas linhas ao seu inicialização arquivo:

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');
}

Passo 5: Agora adicione a vista ajudante jQuery à sua Layout arquivo:

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

Passo 6: Para testar se você tem tudo de trabalho, adicione esta linha para um de seus vista de scripts :

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

Agora, se você abrir esta página no seu navegador, deve haver um campo de texto. Você deve ser capaz de clicar no campo de texto, que aparece automaticamente um calendário que foi estilizado com o tema UI Lightness.

Outras dicas

Um pouco pegadinha :
Você tem que adicionar a pasta ZendX à sua biblioteca diretório -. Aquele que também tem a sua Zend diretório

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

Se você perder acrescentando ZendX à sua biblioteca diretório, você obter lotes de mensagens de erros como este:

Fatal error:  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/: .....

Outra pequena pegadinha :
No código apresentado por Andrew acima, observe as palavras importantes destacam-se:

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

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

Enquanto $this->jQuery() deve ir na Layout arquivo para que todas as páginas obter funcionalidade jQuery, o código jQuery real deve ir ao arquivo de visão si - application/views/scripts/yourcontroller/youraction.pthml - ele não funciona no layout com apenas este código simples .

A solução é ->

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;
}

Eu só mudei meu código de _initViewHelpers para _initView

e ele funciona para mim.

Só queria acrescentar que você tem que (ou pelo menos eu tinha a) permitir que os componentes jQuery e jQuery nos _initViewHelpers funcionar:

$view->jQuery()->enable()
            ->uiEnable();

As user117640 triste,

Eu tinha para permitir que o jQuery UI e, isso pode ser feito em:

inicialização:

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

controlador :: someAction:

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

vista someAction.phtml:

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

incluir este para ur arquivo de inicialização

$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');

Adicione isto a seu layout

<head>
    <?php echo $this->jQuery(); ?>
</head>
funções

e uso jQuery UI em ur arquivo de visão: Escolha a sua Data:

<?php echo $this->datePicker("dp1", '', array('defaultDate' => date('Y/m/d', time()))); ?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top