ZendFramework - 如何添加 - >来自控制器的HeadScript()?

时间:2012-01-26 14:42:58

标签: php zend-framework

我有一个案例,我需要将控制器中的Javascript添加到已经有HeadScript()的布局中;

如何从控制器那样做?

例如:$this->view->HeadScript()->appendScript();

这是控制器:两者都不适用。

class RouterController extends Zend_Controller_Action
{
  public function init()
  {
    $this->view->HeadScript()->appendFile('/js/test.js')->setIndent(8);
    $this->view->HeadScript( Zend_View_Helper_HeadScript::FILE, '/js/test.js' );
  }
}

这是视图文件:index.phtml

<?//$this->HeadScript()->appendFile('/js/test.js')->setIndent(8);?>

如果我在视图中取消注释它可以工作但不在Controller中。我想现在从控制器应用这个吗?

5 个答案:

答案 0 :(得分:11)

$this->view->headScript()->appendFile('/path/to/file.js');

答案 1 :(得分:3)

<?//$this->HeadScript()->appendFile('/js/test.js')->setIndent(8);//Your question ?>
$this->view->headScript()->appendFile('/path/to/file.js');//Alex Howansky's answer

略有不同。 :)

答案 2 :(得分:2)

$this->view->HeadScript( Zend_View_Helper_HeadScript::FILE, '/path/to/file.js' );

$this->view->HeadScript( Zend_View_Helper_HeadScript::SCRIPT, 'js code' );

$this->view->InlineScript()也一样。

答案 3 :(得分:2)

我从控制器中的preDispatch方法开始使用它,记住你必须在传递标题之前传递布局更改。

public function preDispatch() {
        parent::preDispatch();
        $layout = new Zend_Layout();

        $layout->getView()->headScript()->appendScript('/javascript/form.js', 'text/javascript');
    }

您仍需要在布局中使用headScript占位符。

答案 4 :(得分:1)

$headScript = $this->getServiceLocator()->get('viewhelpermanager')->get('headScript');
$headScript->prependFile($this->getSystemBaseUrl()."js/front_end/lib/jQuery/jquery-2.2.3.min.js","text/javascript");