Asset 类別

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" 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();