0

私はいくつかの問題に遭遇しました。appendFile は、ビューからは機能していないようです。prependFile に変更しても同じ動作になります。

レイアウト.phtml

<!doctype html>
<html lang="en" dir="ltr">
    <head>
        <?php
        $this->headScript()->appendFile('http://code.jquery.com/ui/1.10.3/jquery-ui.js'); 
        $this->headScript()->appendFile('/theme/javascripts/application.js'); 
        $this->headScript()->appendFile('/js/own.js'); 
        ?>
    </head>
    <body>
        <?php echo $this->layout()->content; ?>
        <?php echo $this->headScript() ?> 
    </body>
</html>

index.phtml

<?php $this->headScript()->appendFile('/js/another.js') ?>

出力

<!doctype html>
<html lang="en" dir="ltr">
<head>

</head>
<body>      
    <script type="text/javascript" src="/js/another.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script type="text/javascript" src="/theme/javascripts/application.js"></script>
    <script type="text/javascript" src="/js/own.js"></script> 
</body>
</html>

ご覧のとおり、/js/another.js が最初の js になります。それは私が望むものではなく、最後に置きたいです。誰が何が悪いのか知っていますか?

4

2 に答える 2

0

/js/another.jslayout.phtml最初に呼び出され、次に呼び出す<?php echo $this->layout()->content; ?>index.phtmlファイルが呼び出されるためです。

コードで次のことを行いました。
<?php echo $this->layout()->content; ?>
<?php echo $this->headScript() ?>

したがって、実際には を呼び出しているlayout()ため、を呼び出してから、残りの部分を持つ をindex.phtml呼び出しています。headscript()js記載されているものindex.phtmlを追加し、 から残りを追加しheadscript()ます。逆にやってみる…

試してみてください:

<!doctype html>
<html lang="en" dir="ltr">
    <head>
        <?php
            $this->headScript()->appendFile('http://code.jquery.com/ui/1.10.3/jquery-ui.js'); 
            $this->headScript()->appendFile('/theme/javascripts/application.js'); 
            $this->headScript()->appendFile('/js/own.js'); 
        ?>
    </head>
    <body>
        <?php echo $this->headScript() ?> 
        <?php echo $this->layout()->content; ?>
    </body>
</html>

理想的には、すべてのスクリプトを<HEAD>セクションに出力する必要があります。

于 2013-08-10T13:50:55.707 に答える