繁体   English   中英

Concrete5在单个页面中导入JS或CSS

[英]Concrete5 import JS or CSS in single page

我一直在他们的文档中查看此页面: http : //documentation.concrete5.org/developers/assets/requiring-an-asset

但是,没有一种选择适合我。 没有错误或任何东西。 它只是忽略了requireAsset方法。

控制器

<?php
namespace Application\Controller\SinglePage;

use PageController;

class MyAccount extends PageController
{
  public function view()
  {
    $this->requireAsset('javascript', 'js/my_account');
  }
}

它的工作方式有效,但是使用起来并不方便,并且无法利用所有选项。 问题出在以下事实:您在控制器中需要从未真正声明过的资产。

现在,它已在您的app.php中声明,但不一定必须声明。 您也可以在控制器中执行此操作,这将使维护更容易。

<?php
namespace Application\Controller\SinglePage;

use PageController;
use AssetList;
use Asset;

class MyAccount extends PageController
{
    public function view()
    {
        $al = AssetList::getInstance();

        // Register (declare) a javascript script. here I called it foobar/my-script which is the reference used to request it
        $al->register(
            'javascript', 'foobar/my-script', 'js/my_account.js', array('version' => '1.0', 'position' => Asset::ASSET_POSITION_FOOTER, 'minify' => true, 'combine' => true)
        );

        // Register (declare) a css stylesheet. here I called it foobar/my-stylesheet which is the reference used to request it
        $al->register(
            'css', 'foobar/my-stylesheet', 'css/my_account.css', array('version' => '1.0', 'position' => Asset::ASSET_POSITION_HEADER, 'minify' => true, 'combine' => true)
        );

        // Gather all the assets declared above in an array so you can request them all at once if needed
        $assets = array(
            array('css', 'foobar/my-stylesheet'),
            array('javascript', 'foobar/my-script')
        );

        // Register the asset group that includes all your assets (or a subset as you like). here I called it foobar/my-account which is the reference used to request it
        $al->registerGroup('foobar/my-account', $assets);

        // require the group so all the assets are loaded together
        $this->requireAsset('foobar/my-account');

        // Alternatively you can call only one of them
        // $this->requireAsset('javascript', 'foobar/my-script');
    }
}

经过大量挖掘,终于设法找到了正确执行的方法。 这是如何做...

application / config / app.php:

<?php

return array(
    'assets' => array(

      'foobar/my-account' => array(
            array(
                'javascript',
                'js/my_account.js'
            ),
        ),

    ),
);

控制器:

<?php
namespace Application\Controller\SinglePage;

use PageController;

class MyAccount extends PageController
{
  public function view()
  {
    $this->requireAsset('javascript', 'foobar/my-account');
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM