我正在开发一个新的zend框架应用程序,当我刚刚为我的layout.phtml文件和Bootstrap _initScript方法编写headScript部分时,在没有加载脚本后查看源代码...一个非常奇怪的结果。
我明白了:
<script type="text/javascript">
//<!--
/js/jquery-1.8.1.min.js //-->
这是我的layout.phtml代码:
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headTitle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<?php echo $this->layout()->content; ?>
</body>
</html>
这是我的Bootstrap.php代码:
protected function _initScript()
{
$this->view->headScript()
->prependScript( "/js/jquery-1.8.1.min.js" );
}
正如您所看到的,它是非常普通的代码!
任何人都可以帮我找出这里发生了什么?
答案 0 :(得分:7)
您正在尝试添加“文件”而不是“脚本”。
将Bootstrap.php更改为:
protected function _initScript()
{
$this->view->headScript()
->prependFile( "/js/jquery-1.8.1.min.js", $type = 'text/javascript' );
}
同时检查headScript reference。
有任何问题吗? :)
答案 1 :(得分:3)
我发现在设置视图时,通常最好获取视图对象,设置占位符值,然后返回视图,如:
protected function _initView()
{
//Initialize view
$view = new Zend_View();
//set doctype for default layout
$view->doctype(Zend_Registry::get('config')->resources->view->doctype);
//set css includes
$view->headLink()->setStylesheet('/css/normalize.css');
$view->headLink()->appendStylesheet('/css/blueprint/src/liquid.css');
$view->headLink()->appendStylesheet('/css/blueprint/src/typography.css');
//add javascript files
$view->headScript()->setFile('/javascript/modernizr.js');
$view->headScript()->appendFile('/javascript/jquery.js');
//add it to the view renderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer');
$viewRenderer->setView($view);
//Return it, so that it can be stored by the bootstrap
return $view;
}
我不确定$this->view->
语法在引导程序中的效果如何,但我怀疑它有一些问题。
答案 2 :(得分:0)
我使用Zendx_jQuery组件(http://framework.zend.com/manual/1.11/en/zendx.jquery.html),我发现它很方便,特别是如果你在表单中使用jQuery UI。
在Bootstrap.php中:
protected function _initjQuery()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper_');
return $view;
}
在我的布局html标题中:
$this->jQuery()->setLocalPath($this->baseUrl('js/libs/jquery-1.7.2.min.js'))
->setUiLocalPath($this->baseUrl('js/libs/jquery-ui-1.8.20.custom.min.js'))
->addStylesheet($this->baseUrl('css/ui-lightness/jquery-ui-1.8.20.custom.css'))
->enable()
->uiEnable();
/* I only print jquery css in the header */
<?= $this->jQuery()->setRenderMode(ZendX_JQuery::RENDER_STYLESHEETS); ?>
在我的布局体底部:
<?= $this->jQuery()->setRenderMode(ZendX_JQuery::RENDER_LIBRARY | ZendX_JQuery::RENDER_SOURCES | ZendX_JQuery::RENDER_JAVASCRIPT | ZendX_JQuery::RENDER_JQUERY_ON_LOAD); ?>
答案 3 :(得分:0)
试试这个:
<?php
$this->headTitle('Your title');
$this->headScript()->headScript()->prependFile('/js/jquery.js');
$this->headLink()->appendStylesheet('/css/yourcss.css');
echo $this->doctype();
?>
<html>
<head>
<?php echo $this->headTitle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<?php echo $this->layout()->content; ?>
</body>