2012-04-27 25 views
13

Necesito agregar jQuery y otros archivos javascript a mi proyecto de Zend Framework. Estoy tratando de hacerlo con un controlador de acción: -¿Cómo agregar un archivo javascript externo a una aplicación Zend Framework 2?

public function userinfoAction() 
{ 
    $this->view->headScript()->appendFile($basePath .'/js/validate_jquary.js'); 
    $this->headScript()->appendFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'); 
    return new ViewModel(); 
} 

Pero no está funcionando.

+0

¿Qué quiere decir por 'no funciona'? ¿Te estás haciendo eco de '$ this-> headScript()' en tu diseño o vista? Además, el hecho de que tenga una declaración de devolución en su acción no me parece correcto, aunque no estoy familiarizado con ZF2, por lo que puede ser válido. – vascowhite

+0

@ vascowhite: Estaba ecoho '$ this-> headScript()' en el controlador. –

+1

No debería hacer eco de nada en el controlador, que rompe el MVC. Deberías hacer eso en la vista o el diseño. – vascowhite

Respuesta

9
$this->HeadScript()->appendFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js','text/javascript'); 
$this->HeadScript()->appendFile('http://localhost/zend/public/js/validate_jquary.js','text/javascript'); 

Está bien con este código en la vista. Pero no sé si este es el método correcto.

1

no está utilizando la vista para agregar jQuery:

$this->view->headScript()->appendFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'); 
1

una buena manera para esto es usar el siguiente código en su acción de controlador Digamos que quieres incluir las paginator.js

$this->view->headScript()->appendFile($this->view->baseUrl().'/js/paginator.js'); 
1

Todas las toneladas por encima de los errores se dan para mí y $ this-> Ver-> headScript() es en absoluto acerca de Zend Framework 1. Esto funciona para mí:

en su controlador antes de añadir definición de clase de controlador:

use Zend\View\Helper\HeadScript; 

y entonces puede usar algo como esto en su controlador (Seguro de que puede usarlo en cualquier acción, no sólo en el constructor):

/** 
* @var Zend\View\Helper\HeadScript 
*/ 
protected $headScript; 

function __construct() { 
    $this->headScript = new HeadScript(); 
    $this->headScript->appendFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js','text/javascript'); 
} 

y entonces usted debe agregar esto a su disposición:

<?php echo $this->headScript(); ?> 
10

Aquí es cómo se puede utilizar ayudantes de vista desde el interior de un controlador en ZF2 para resolver su problema:

public function someAction() 
{     
    $this->getViewHelper('HeadScript')->appendFile($basePath . '/js/somejs.js');  
} 

protected function getViewHelper($helperName) 
{ 
    return $this->getServiceLocator()->get('viewhelpermanager')->get($helperName); 
} 
+0

+1 para dar el ejemplo del controlador. Parece sucio agregar guiones y estilos desde la vista, pero parece que muchos ejemplos de ZF2 sugieren que está bien. ¿Cuál se considera la forma "correcta" de agregar scripts/estilos? – dKen

4

Probablemente el más fácil w ay utilizar ayudantes de vista desde el interior de un controlador en ZF2 es a través del objeto de render:

public function someAction() 
{     
    $renderer = $this->serviceLocator->get('Zend\View\Renderer\RendererInterface'); 
    $renderer->headScript()->appendFile($renderer->baseUrl() . '/js/somejs.js'); 
} 
2

puede probar esto. sus obras excelentes para mí

// escribir estas líneas en su SampleController

public function someAction() 
{ 

$this->getViewHelper('HeadScript')->appendFile('/js/yourjsfile.js'); 
$this->getViewHelper('HeadScript')->appendFile('/js/jquery/jquery.min.js'); 
} 

// escribir siguiente método en el controlador

protected function getViewHelper($helperName) 
{ 

    return $this->getServiceLocator()->get('viewhelpermanager')->get($helperName); 
} 
Cuestiones relacionadas