Asset 类別

Asset 类別是一系列協助收集、分組和顯示資產(js、css、img)的方法。

配置

Asset 类別的預設是透過 fuel/core/config/asset.php 配置档案來配置。 它已经填入了一个預設配置。 你可以透過添加一个同名的配置档案到你应用程序的 config 目录來覆寫此配置,并在这裡設定你想要變更的值。 这些将覆寫核心配置,但保留你沒有覆寫的部份。

以下全域配置值可以被定義:

參数 类型 預設 描述
paths 陣列
array('assets/')
預設 asset 根路徑。路徑必須包含一个斜線。
css_dir 字串
'css/'
預設 css 子文件夾。必須包含一个斜線。
js_dir 字串
'js/'
預設 js 子文件夾。必須包含一个斜線。
img_dir 字串
'img/'
預設 image 子文件夾。必須包含一个斜線。
folders 陣列
array(
	'css' => array(),
	'js'  => array(),
	'img' => array(),
),
为每个資產类型指定一个或更多各自的資產文件夾。
url 字串
\Config::get('base_url')
指向你資產的 root URL。當載入一个資產,資產路徑以及資產名稱会被附加到此 URL。
add_mtime 布林
true
是否附加資產最後修改時間戳記到 URL,这将有助於快取資產,值得推薦。
indent_level 整数
1
为了保持產生的 HTML 整齊,Asset 类可以縮排标籤。这設定縮排的級別。
indent_with 字串
"\t"
要用來縮排產生的 HTML 的字串。这預設是一个 tab。
auto_render 布林
true
这控制當一个資產方法沒帶群組名稱被呼叫時,是否回傳產生的 HTML。 如果为 false,該資產将被添加到預設群組以在之後呈现。
fail_silently 布林
false
當設为 true,當資產档案沒被找到時,例外将不会被拋出。 該資產将会被忽略。
always_resolve 布林
false
當設为 true,Asset 类別始終会嘗试在本地解析資產。當設为 false, it will only resolve it the asset URL is relative (i.e. pointing to the local host itself). This is useful if you have a copy of your assets on a separate asset server, or behind an asset cache like Varnish.

Asset 路徑

有一些方法可以定義資產路徑。你可以定義全域的資產搜尋路徑,它定義你資產的 'root'。 當搜尋一个資產時,为已載入資產定義的子文件夾会被附加到这些路徑。 如果你使用多个全域搜尋路徑,它們必須都使用相同的子文件夾結構。

// 假設:
// - 你的 URL 是 "http://example.org/"
// - 你的 全域搜尋路徑是 "assets/"
// - 你的 img_dir 是 "img/"
// 这将回傳 <img src="http://example.org/assets/img/icons/myicon.png" />
echo Asset::img('icons/myicon.png');

如果你不想要一个标准的子文件夾結構,或你必須在现有环境的工作, 而該环境的資產路徑已被定義, Asset 类別能让你为每種支援的資產类型定義个別的資產搜尋文件夾。

// 如果这是你的配置
// 'folders' => array(
//	'css' => array('assets/css'),
//	'js'  => array('assets/js', 'global/js/'),
//	'img' => array('assets/img/', 'assets/icons'),
// ),
// 而你的圖示在 'assets/icons',
// 这将回傳 <img src="http://example.org/assets/icons/myicon.png" />
echo Asset::img('myicon.png');

搜尋路徑和搜尋文件夾都可以使用 add_path() 方法在执行階段定義。

靜態資產

如果你的(一些)資產沒儲存在应用程序根目录,而是在 URL 使用不同主機, 你可以使用下面的技術來載入一个資產:

// 每个資產个別地
echo Asset::img('http://static.example.org/icons/myicon.png');

// 對所有組別,設定你的 Asset URL 到 'http://static.example.org/'
echo Asset::img('icons/myicon.png');
在这个情況下搜尋路徑会被忽略。