2012-04-27 2 views
13

Мне нужно добавить jQuery и другие файлы javascript в мой проект Zend Framework. Я пытаюсь сделать это с помощью контроллера действия: -Как добавить внешний файл javascript в приложение 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(); 
} 

Но он не работает.

+0

Что вы имеете в виду под «не работает»? Вы эхом отдаете '$ this-> headScript()' в своем макете или представлении? Кроме того, тот факт, что у вас есть оператор return в вашем действии, не подходит мне, хотя я не знаком с ZF2, поэтому он может быть действительным. – vascowhite

+0

@ vascowhite: Я был ecoho '$ this-> headScript()' в контроллере. –

+1

Вы не должны эхом ничего в контроллере, который разбивает MVC. Вы должны сделать это в представлении или макете. – vascowhite

ответ

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

Это нормально с этим кодом в представлении. Но я не знаю, это правильный метод.

1

Вы не используете представление, чтобы добавить JQuery:

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

хороший способ для того, чтобы использовать приведенный ниже код в действии контроллера позволяет сказать, и хотите, чтобы включить paginator.js

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

Все вышеперечисленное дает тонны ошибок для меня и $ this-> view-> headScript() это вообще о Zend Framework 1. Это работает для меня:

в контроллере до определения класса оного контроллера:

use Zend\View\Helper\HeadScript; 

, а затем вы можете использовать что-то вроде этого в контроллере (что вы можете использовать его в каких-либо действий, а не только в конструкторе):

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

, а затем вы должны добавить это в макете:

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

Вот как вы можете использовать Помощники внутри контроллера в ZF2, чтобы решить вашу проблему:

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

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

+1 для указания примера с контроллера. Он чувствует себя грязным, добавляя скрипты и стили из представления, но, похоже, многие примеры ZF2 говорят, что это нормально. Какой из них считается «правильным» способом добавления скриптов/стилей? – dKen

4

Вероятно, самый простой ж ау использовать их помощников внутри контроллера в ZF2 осуществляется через объект визуализатора:

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

вы можете попробовать это. его отлично работает для меня

// записываем эти строки в SampleController

public function someAction() 
{ 

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

// записываем следующий метод в контроллере

protected function getViewHelper($helperName) 
{ 

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

 Смежные вопросы

  • Нет связанных вопросов^_^