【问题标题】:Including JavaScript in Phalcon views在 Phalcon 视图中包含 JavaScript
【发布时间】:2012-10-21 18:32:12
【问题描述】:

考虑以下两个文件:

// view/index.phtml
 echo \Phalcon\Tag::javascriptInclude("javascript/jquery.js"); 
// view/about/about.phtml
 echo \Phalcon\Tag::javascriptInclude("javascript/x.js");

关于将生成如下:

<script src="javascript/x.js">
<script src="javascript/jquery.js">

但是x.js 文件依赖于jquery.js,所以它应该放在它之前。

【问题讨论】:

    标签: php javascript phalcon


    【解决方案1】:

    假设你有以下结构:

    app/views/index.phtml
    app/views/about/index.phtml
    

    您可以在顶部的app/views/index.phtml 中定义以下内容

    <?php echo \Phalcon\Tag::javascriptInclude("javascript/jQuery.js"); ?>
    <?php echo \Phalcon\Tag::javascriptInclude("javascript/myother.js"); ?>
    

    然后在app/views/about/index.phtml

    <?php echo \Phalcon\Tag::javascriptInclude("javascript/x.js"); ?>
    

    这将使jQuery.jsmyother.js 脚​​本在x.js 之前加载,因为x.js 将与

    一起出现在主视图中
    <?php echo $this->getContent() ?>
    

    或者,您可以在主视图中进行设置:

    <?php echo \Phalcon\Tag::javascriptInclude("javascript/jQuery.js"); ?>
    <?php echo \Phalcon\Tag::javascriptInclude("javascript/myother.js"); ?>
    <?php if ($is_about) { echo \Phalcon\Tag::javascriptInclude("javascript/myother.js"); } ?>
    

    在你的 About 控制器中

    $this->view->setVar('is_about', TRUE);
    

    HTH

    【讨论】:

    • 谢谢,您的解决方案有效,但它也忽略了问题!我们希望所有 js 文件都放在页面底部。 Phalanger 应该将 js 文件放入队列中,并在页面底部正确呈现它们。另一种方法它为 js 文件分配优先级&lt;?=\Phalcon\Tag::javascriptInclude("javascript/jQuery.js",0); ?&gt; 即使它可以使用 js minizer
    • 由于文件的加载没有优先级(目前),它们会随着应用程序的流动而线性解析。您的问题可能不是最佳的解决方案(正如您提到的优先级功能)是将这些文件组合在一起并按依赖顺序加载它们。
    【解决方案2】:

    不确定它是否适合 OP 的用例,但对于其他搜索,此模式非常有用:

    class MyController extends Phalcon\Mvc\Controller
    {
    
        public function initialize()
        {
            $this->assets->addJs("/path/to/myjs.js");
    
        [...etc]
    

    文档: http://docs.phalconphp.com/en/latest/reference/assets.html

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2023-03-31
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多