目录
当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Asset 用法 - 类別

优质
小牛编辑
126浏览
2023-12-01

Asset 类别是一系列协助收集、分组和显示资产(js、css、img)的方法。

用法

使用资产可用两种方式做到:透过静态的 Asset 类别用法以及透过由 Asset::forge() 或 Asset::instance() 回传的资产物件。此段落包括静态用法, 它将始终与指定在配置中的预设实例协作。

注:当添加到一个群组,css、js 和 img 方法将回传目前实例。 这将发生在你提供一个群组或 auto_renderfalse 且没有群组(或 null)在呼叫中被提供。

使用资产物件,Asset::instance() 和 Asset::forge() 在进阶段落中有解释。

add_path($path, $type = null)

add_path 方法添加所给路径到全域资产搜寻路径阵列的前面。 如果指定一个 $type,它将添加该路径到所给类型的搜寻文件夹阵列的前面。

静态
参数
参数预设描述
$path必要要添加到资产路径阵列(相对于资产路径并且带有结尾斜线)前面的路径。
$type
null
如果添加一个文件夹,要添加的类型。Asset 类别有预定义的 'img'、'css' 和 'js' 类型。 如果你传递一个未定义类型,一个新路径结构将为此类型建立。 要添加相同路径到多个类型,传递一个类型的阵列给它们。
回传目前实例
範例
/*
 * 这些路径将需要在配置文件中定义的子文件夹,
 * 这取决于你试图使用的内容类型。
 */
Asset::add_path('resources/template_1/');
Asset::add_path('resources/template_2/');

/*
 * 添加一个全域路径给所有资产类型,然后添加个别路径到
 * images 和 css 档案。
 */
Asset::add_path('assets/global/', array('css', 'js', 'img'));
Asset::add_path('assets/icons/', 'img');
Asset::add_path('assets/images/', 'img');
Asset::add_path('assets/css/', 'css');

/*
 * 建立一个新的资产类型
 */
Asset::add_path('assets/docs/', 'pdf');

/*
 * 你可以像这样鍊结呼叫。
 */
Asset::add_path('resources/templates/dark/')
	->add_path('resources/templates/light')
	->add_path('resources/templates/brown');

css($stylesheets = array(), $attr = array(), $group = NULL, $raw = false)

css 方法添加 css 到一个具名群组,预设群组,或回传 css 标籤。

静态
参数
参数预设描述
$stylesheets必要一个要被添加到群组或被回传为标籤的样式表档案名称的阵列/字串,或一个包含内嵌 CSS 的字串。
$attr
array()
一个要被应用在 css 档案的属性阵列。
$group
null
归类 css 的群组名称。如果为 null,该方法将回传 css 标籤。
$raw
false
如果设为 true,结果的 css 标籤将直接包含字串或档案内容,而不是藉由一个 link 标籤。
回传呈现的资产字串,或目前实例当添加到群组时。
範例
// 添加档案到群组并回传 '' 如果群组不是 null
Asset::css(array('header.css', 'footer.css'), array(), 'layout', false);

/* 回传
 * <link href="../assets/css/inline.css" rel="stylesheet" />
 * 如果在配置中的 auto_render 被设为 true。
 * 如果不是,该资产将被添加到预设群组给之后呈现
 */
echo Asset::css('inline.css');

/* 回传
 * <style>
 * .bold_class { font-weight: bold }
 * #header {height: 50px}
 * </style>
 */
echo Asset::css('inline.css', array(), null, true);

/* 回传
 * <style>
 * .bold_class { font-weight: bold }
 * #header {height: 50px}
 * </style>
 */
Asset::css(".bold_class { font-weight: bold }\n#header {height: 50px}", array(), 'inline', true);
echo Asset::render('inline');

/* 这会是一样 */
echo Asset::css(".bold_class { font-weight: bold }\n#header {height: 50px}", array(), null, true);

find_file($file, $type, $folder = '')

find_file 在所有为该类别定义的资产搜寻文件夹中定位所给类型的档案。

静态
参数
参数预设描述
$file必要你要搜寻的档案名称。
$type必要要被搜寻的资产类型(css、js、img)。
$folder
''
要附加到每个搜寻文件夹的子文件夹名称。
回传指向档案的路径或 false 如果找不到
範例
// 寻找一个 CSS 档案
$path = Asset::find_file('layout.css', 'css');

// 寻找一个图示(假设图示在一个称为 'icons' 的 img 子文件夹)
$path = Asset::find_file('icon.png', 'img','icons/');

img($images = array(), $attr = array(), $group = NULL)

img 方法添加图像到具名群组,预设群组,或回传图像标籤。

静态
参数
参数预设描述
$images必要一个要被应用到群组或被回传为标籤的图像档案名称的阵列/字串。
$attr
array()
一个要应用在图像标籤的属性阵列。
$group
null
要应用图像的群组。
回传呈现的资产字串,或目前实例当添加到群组时。
範例
/* 回传
 * <img src="../assets/img/logo.png">
 * 如果在配置中的 auto_render 被设为 true。
 * 如果不是,该资产将被添加到预设群组给之后呈现
 */
echo Asset::img('logo.png', array('id' => 'logo'));

Asset::img(array('bob.jpg', 'joe.jpg', 'sally.jpg'), array('class' => 'thumbnail'), 'team_avatars');

js($scripts = array(), $attr = array(), $group = NULL, $raw = false)

js 方法添加 javascript 到具名群组,预设群组,或回传 script 标籤。

静态
参数
参数预设描述
$scripts必要一个要被应用到群组或被回传为标籤的 js 档案名称的阵列/字串,或一个包含内嵌 javascript 的字串。
$attr
array()
一个要应用到 js 档案的属性阵列。
$group
null
归类 js 的群组名称。如果为 null,该方法将回传 js 标籤。
$raw
false
如果设为 true,结果的 js 标籤将直接包含字串或档案内容,而不是藉由一个 script 标籤。
回传呈现的资产字串,或目前实例当添加到群组时。
範例
// 回传 '' 如果 $raw 设为 false
Asset::js(array('jquery.js', 'jqueryui.js'), array(), 'jquery', false);

/* 回传
 * <script type="text/javascript">
 * var menu = getElementById('menu');
 * menu.initialize_menu();
 * </script>
 */
echo Asset::js('menu_init.js', array(), null, true);

/* 回传
 * <script type="text/javascript" src="../assets/js/jquery.js"></script>
 * 如果在配置中的 auto_render 被设为 true。
 * 如果不是,该资产将被添加到预设群组给之后呈现
 */
echo Asset::js('jquery.js');

/* 回传
 * <script type="text/javascript">
 * var menu = getElementById('menu');
 * menu.initialize_menu();
 * </script>
 */
Asset::js("var menu = getElementById('menu');\nmenu.initialize_menu();", array(), 'inline', true);
echo Asset::render('inline');

/* 这会是一样 */
echo Asset::js("var menu = getElementById('menu');\nmenu.initialize_menu();", array(), null, true);

get_file($file, $type, $folder = '')

get_file 方法能让你取得指向资产档案的 URL。

静态
参数
参数预设描述
$file必要要寻找的资产名称。
$type必要要搜寻的资产类型。'img'、'css'、和 'js' 是支援的类型。
$folder
''
你可以选择性的指定子文件夹,如果该资产是在定义的资产搜寻路径之一的子文件夹中。
回传完整的资产 URL(根据定义的 base_url)或 false 如果没找到。
範例
// 回传一些东西像 'http://example.org/assets/js/jquery.js'
echo Asset::get_file('jquery.js', 'js');

remove_path($path, $type = null)

remove_path 方法从全域资产搜寻路径阵列中移除所给路径。 如果指定一个 $type,它将从所给类型的搜寻文件夹阵列移除该路径。

静态
参数
参数预设描述
$path必要指向来源资产路径阵列的路径。
$type
null
如果添加一个文件夹,要加进的类型。目前支援:'img'、'css' 和 'js'。 要添加相同路径到多个类型,传递一个类型的阵列给它们。
回传目前实例
範例
/*
 * 移除全域搜寻路径
 */
Asset::remove_path('resources/template_1/');
Asset::remove_path('resources/template_2/');

/*
 * 为不同资产类型移除个别的路径
 */
Asset::remove_path('assets/global/', array('css', 'js', 'img'));
Asset::remove_path('assets/icons/', 'img');
Asset::remove_path('assets/images/', 'img');
Asset::remove_path('assets/css/', 'css');

/*
 * 或鍊结呼叫。
 */
Asset::remove_path('resources/templates/dark/')
	->remove_path('resources/templates/light')
	->remove_path('resources/templates/brown');

render($group = null, $raw = false)

render 呈现资产的群组并且回传标籤。 如果没指定群组,预设群组会被呈现。

静态
参数
参数预设描述
$group
null
要呈现的群组名称,或 null 是预设群组。
$raw
false
如果为 true,此方法将包含要嵌入的 css/js 档案内容。
回传字串
範例
/* 回传
 * <link href="../assets/css/header.css" rel="stylesheet" />
 * <link href="../assets/css/footer.css" rel="stylesheet" />
 */
echo Asset::render('layout');

// 呈现预设群组
echo Asset::render();