2012-04-27 10 views
13

Ho bisogno di aggiungere jQuery e altri file javascript al mio progetto Zend Framework. Sto cercando di farlo con un controller di azione: -Come aggiungere un file javascript esterno a un'applicazione 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(); 
} 

Ma non funziona.

+0

Che cosa si intende per 'non funziona'? Stai facendo eco '$ this-> headScript()' nel tuo layout o vista? Inoltre, il fatto che tu abbia una dichiarazione di ritorno nella tua azione non mi sembra giusto, anche se non ho familiarità con ZF2, quindi potrebbe essere valido. – vascowhite

+0

@ vascowhite: ero ecoho '$ this-> headScript()' nel controller. –

+1

Non dovresti far eco a nulla nel controller, che spezza MVC. Dovresti farlo nella vista o nel layout. – vascowhite

risposta

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

E 'OK con questo codice nella visualizzazione. Ma non so è questo metodo corretto.

1

non si utilizza la vista per aggiungere jQuery:

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

un buon modo per che è quello di utilizzare il codice qui sotto nella tua azione di controllo Diciamo che u desidera includere i paginator.js

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

tutto quanto sopra sta dando un sacco di errori per me e $ this-> Visualizza-> headScript() è tutto su Zend Framework 1. Questo funziona per me:

nel controller prima di definizione della classe del controller aggiuntivo:

use Zend\View\Helper\HeadScript; 

e allora si può usare qualcosa di simile nel vostro controller (che si può usare in ogni azione, non solo nel costruttore):

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

e poi si dovrebbe aggiungere questo al layout:

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

Ecco come è possibile utilizzare view helpers dall'interno di un controller in ZF2 per risolvere il 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 per dare l'esempio dal controller. Sembra sporco aggiungendo script e stili dalla vista, ma sembra che molti esempi di ZF2 suggeriscano che questo è ok. Quale è considerato il modo "corretto" di aggiungere script/stili? – dKen

4

probabilmente il più facile w ay Per utilizzare la vista aiutanti all'interno di un controllore in ZF2 è tramite l'oggetto di rendering:

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

si può provare questo. le sue opere di bene per me

// scrivere queste righe nel vostro SampleController

public function someAction() 
{ 

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

// scrivere seguente metodo nel controller di

protected function getViewHelper($helperName) 
{ 

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