Concrete5 在单个页面中导入 JS 或 CSS
Concrete5 import JS or CSS in single page
我一直在他们的文档中查看此页面:http://documentation.concrete5.org/developers/assets/requiring-an-asset
但是 none 的选项对我有用。没有错误或任何东西。它只是忽略了 requireAsset
方法。
控制器:
<?php
namespace Application\Controller\SinglePage;
use PageController;
class MyAccount extends PageController
{
public function view()
{
$this->requireAsset('javascript', 'js/my_account');
}
}
经过大量挖掘,终于找到了正确的方法。方法如下...
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');
}
}
您的方法可行,但不是很方便,也没有使用所有选项。
问题出在这样一个事实,即您在控制器中需要一个您一开始从未真正声明过的资产。
现在它已在您的 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');
}
}
我一直在他们的文档中查看此页面:http://documentation.concrete5.org/developers/assets/requiring-an-asset
但是 none 的选项对我有用。没有错误或任何东西。它只是忽略了 requireAsset
方法。
控制器:
<?php
namespace Application\Controller\SinglePage;
use PageController;
class MyAccount extends PageController
{
public function view()
{
$this->requireAsset('javascript', 'js/my_account');
}
}
经过大量挖掘,终于找到了正确的方法。方法如下...
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');
}
}
您的方法可行,但不是很方便,也没有使用所有选项。 问题出在这样一个事实,即您在控制器中需要一个您一开始从未真正声明过的资产。
现在它已在您的 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');
}
}