2

我正在开发一个新的 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" );
}

如您所见,这是非常普通的代码!

任何人都可以帮助我找出这里发生了什么?

4

4 回答 4

7

您正在尝试添加“文件”而不是“脚本”。

将 Bootstrap.php 更改为:

protected function _initScript()
{
    $this->view->headScript()
       ->prependFile( "/js/jquery-1.8.1.min.js", $type = 'text/javascript' );
}

还要检查这个以获取headScript 参考

任何问题?:)

于 2012-08-31T05:29:03.233 回答
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->引导程序的语法效果如何,但我怀疑它有一些问题。

于 2012-08-31T06:51:55.000 回答
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); ?>
于 2012-08-31T15:24:43.897 回答
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> 

于 2012-08-31T15:29:16.763 回答