2012-04-27 26 views
13

Tôi cần thêm jQuery và các tệp javascript khác vào dự án Khung công tác Zend của tôi. Tôi đang cố gắng thực hiện điều đó bằng Trình điều khiển hành động: -Cách thêm tệp javascript bên ngoài vào ứng dụng 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(); 
} 

Nhưng nó không hoạt động.

+0

Ý anh là gì bởi 'không làm việc' sau đây? Bạn đang lặp lại '$ this-> headScript()' trong bố cục hoặc chế độ xem của bạn? Ngoài ra, thực tế là bạn có một tuyên bố trở lại trong hành động của bạn không nhìn đúng với tôi, mặc dù tôi không quen thuộc với ZF2, vì vậy nó có thể hợp lệ. – vascowhite

+0

@ vascowhite: Tôi đã ecoho '$ this-> headScript()' trong bộ điều khiển. –

+1

Bạn không nên lặp lại bất cứ điều gì trong bộ điều khiển, mà phá vỡ MVC. Bạn nên làm điều đó trong chế độ xem hoặc bố cục. – vascowhite

Trả lời

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

Nó là OK với mã này trong giao diện. Nhưng tôi không biết là phương pháp này đúng.

1

Bạn đang không sử dụng chế độ xem để thêm jquery:

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

một cách tốt cho điều đó là sử dụng mã dưới đây vào bạn controller action phép nói u muốn bao gồm các paginator.js

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

Tất cả các tấn trên được đưa ra sai sót đối với tôi và $ this-> View-> headScript() là tất cả về Zend Framework 1. Điều này làm cho tôi:

trong điều khiển của bạn trước khi add nghĩa lớp điều khiển của:

use Zend\View\Helper\HeadScript; 

và sau đó bạn có thể sử dụng một cái gì đó như thế này trong điều khiển của bạn (chắc chắn rằng bạn có thể sử dụng nó trong bất kỳ hành động, không chỉ ở các nhà xây dựng):

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

và sau đó bạn nên thêm này vào bố cục của bạn:

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

đây là cách bạn có thể sử dụng xem những người giúp đỡ từ bên trong một bộ điều khiển trong ZF2 để giải quyết vấn đề của bạn:

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

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

+1 để đưa ví dụ từ bộ điều khiển. Nó cảm thấy bẩn thêm kịch bản và phong cách từ xem, nhưng có vẻ như nhiều ví dụ của ZF2 cho thấy điều này là ok. Cách nào được coi là cách "thêm" chính xác của việc thêm tập lệnh/kiểu? – dKen

4

có lẽ dễ nhất w ay sử dụng xem những người giúp đỡ từ bên trong một bộ điều khiển trong ZF2 là thông qua các đối tượng renderer:

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

bạn có thể thử này. công trình của nó tốt cho tôi

// viết những dòng này trong SampleController bạn

public function someAction() 
{ 

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

// viết phương pháp trong điều khiển

protected function getViewHelper($helperName) 
{ 

    return $this->getServiceLocator()->get('viewhelpermanager')->get($helperName); 
} 
Các vấn đề liên quan