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

私のレイアウトの body bottom :

<?= $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 に答える