Bagaimana cara menambahkan file javascript eksternal ke aplikasi Zend Framework 2?

Saya perlu menambahkan jQuery dan file javascript lainnya ke proyek Zend Framework saya. Saya mencoba melakukannya dengan pengontrol Aksi: -

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

Tapi itu tidak berhasil.


person Mangala Edirisinghe    schedule 27.04.2012    source sumber
comment
Apa yang Anda maksud dengan 'tidak bekerja'? Apakah Anda menggemakan $this->headScript() dalam tata letak atau tampilan Anda? Selain itu, fakta bahwa Anda memiliki pernyataan return dalam tindakan Anda sepertinya tidak tepat bagi saya, meskipun saya tidak terbiasa dengan ZF2, jadi ini mungkin valid.   -  person vascowhite    schedule 27.04.2012
comment
@ vascowhite: Saya ecoho $this->headScript() di pengontrol.   -  person Mangala Edirisinghe    schedule 30.04.2012
comment
Anda tidak boleh menggemakan apa pun di pengontrol, yang merusak MVC. Anda harus melakukan itu di tampilan atau tata letak.   -  person vascowhite    schedule 30.04.2012


Jawaban (7)


Inilah cara Anda menggunakan view helper dari dalam pengontrol di ZF2 untuk memecahkan masalah Anda:

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

protected function getViewHelper($helperName)
{
    return $this->getServiceLocator()->get('viewhelpermanager')->get($helperName);
}
person aimfeld    schedule 30.11.2012
comment
+1 untuk memberikan contoh dari pengontrol. Rasanya kotor menambahkan skrip dan gaya dari tampilan, tetapi tampaknya banyak contoh ZF2 menunjukkan bahwa ini tidak masalah. Manakah yang dianggap sebagai cara yang benar untuk menambahkan skrip/gaya? - person dKen; 30.06.2014

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

Tidak masalah jika kode ini ditampilkan. Tapi saya tidak tahu apakah metode ini benar.

person Mangala Edirisinghe    schedule 30.04.2012

Mungkin cara termudah untuk menggunakan view helper dari dalam pengontrol di ZF2 adalah melalui objek renderer:

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

Anda dapat mencoba ini. ini berfungsi dengan baik untuk saya

//tulis baris ini di SampleController Anda

public function someAction()
{

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

// tulis metode berikut di controller

protected function getViewHelper($helperName)
{

    return $this->getServiceLocator()->get('viewhelpermanager')->get($helperName);
}
person syamasundar chettu    schedule 10.04.2013

Anda tidak menggunakan tampilan untuk menambahkan jquery:

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

cara yang baik untuk itu adalah dengan menggunakan kode di bawah ini dalam tindakan pengontrol Anda, katakanlah Anda ingin menyertakan paginator.js

$this->view->headScript()->appendFile($this->view->baseUrl().'/js/paginator.js');
person Fawad Ghafoor    schedule 02.05.2012

Semua hal di atas memberikan banyak kesalahan bagi saya dan $this->view->headScript() sama sekali tentang Zend Framework 1. Ini berfungsi untuk saya:

di pengontrol Anda sebelum definisi kelas pengontrol tambahkan:

use Zend\View\Helper\HeadScript;

dan kemudian Anda dapat menggunakan sesuatu seperti ini di pengontrol Anda (tentu saja Anda dapat menggunakannya dalam tindakan apa pun, tidak hanya di konstruktor):

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

dan kemudian Anda harus menambahkan ini ke tata letak Anda:

<?php echo $this->headScript(); ?>
person trushkevich    schedule 15.11.2012