Вопрос по javascript, zend-framework2, zend-framework, jquery – Как добавить внешний файл javascript в приложение Zend Framework 2?

13

Мне нужно добавить jQuery и другие файлы javascript в мой проект Zend Framework. Я пытаюсь сделать это с помощью контроллера действий: -

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

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

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

Ваш Ответ

6   ответов
4

самый простой способ использовать помощники вида из контроллера в ZF2 - через объект рендерера:

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

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

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

Вы не используете представление для добавления jquery:

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

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

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

protected function getViewHelper($helperName)
{
    return $this->getServiceLocator()->get('viewhelpermanager')->get($helperName);
}
+1 за пример с контроллера. Кажется грязным добавление скриптов и стилей из представления, но кажется, что во многих примерах ZF2 это нормально. Какой из них считается "правильным" способ добавления скриптов / стилей?
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);
}

Похожие вопросы