Asset 类別
Asset 类別是一系列協助收集、分組和顯示資產(js、css、img)的方法。
配置
Asset 类別的預設是透過 fuel/core/config/asset.php 配置档案來配置。 它已经填入了一个預設配置。 你可以透過添加一个同名的配置档案到你应用程序的 config 目录來覆寫此配置,并在这裡設定你想要變更的值。 这些将覆寫核心配置,但保留你沒有覆寫的部份。
以下全域配置值可以被定義:
參数 | 类型 | 預設 | 描述 |
---|---|---|---|
paths | 陣列 |
|
預設 asset 根路徑。路徑必須包含一个斜線。 |
css_dir | 字串 |
|
預設 css 子文件夾。必須包含一个斜線。 |
js_dir | 字串 |
|
預設 js 子文件夾。必須包含一个斜線。 |
img_dir | 字串 |
|
預設 image 子文件夾。必須包含一个斜線。 |
folders | 陣列 |
|
为每个資產类型指定一个或更多各自的資產文件夾。 |
url | 字串 |
|
指向你資產的 root URL。當載入一个資產,資產路徑以及資產名稱会被附加到此 URL。 |
add_mtime | 布林 |
|
是否附加資產最後修改時間戳記到 URL,这将有助於快取資產,值得推薦。 |
indent_level | 整数 |
|
为了保持產生的 HTML 整齊,Asset 类可以縮排标籤。这設定縮排的級別。 |
indent_with | 字串 |
|
要用來縮排產生的 HTML 的字串。这預設是一个 tab。 |
auto_render | 布林 |
|
这控制當一个資產方法沒帶群組名稱被呼叫時,是否回傳產生的 HTML。 如果为 false,該資產将被添加到預設群組以在之後呈现。 |
fail_silently | 布林 |
|
當設为 true,當資產档案沒被找到時,例外将不会被拋出。 該資產将会被忽略。 |
always_resolve | 布林 |
|
當設为 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');
在这个情況下搜尋路徑会被忽略。