Asset 类別
Asset 类別是一系列協助收集、分組和顯示資產(js、css、img)的方法。
用法
使用資產可用兩種方式做到:透過靜態的 Asset 类別用法以及透過由
Asset::forge() 或 Asset::instance() 回傳的資產物件。此段落包括靜態用法,
它将始終與指定在配置中的預設實例協作。
注:當添加到一个群組,css、js 和 img 方法将回傳目前實例。
这将发生在你提供一个群組或 auto_render 是 false 且沒有群組(或
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" id="logo">
* 如果在配置中的 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();
|