[
'badge',
'badge-' . $type,
],
'role' => 'alert',
'html' => $content
];
if($isPill)
$htmlArgs['class'][] = 'badge-pill';
if($link)
$htmlArgs['href'] = $link;
return $this->tag($tag, $htmlArgs);
} else {
return '';
}
}
/**
* 返回Alert元件的Html
*
* @param string $content 內容,可包含連結,連結格式為:key,再於alertLink參數使用陣列指定傳入網址
* @param $type string 類型
* @param bool $dismiss 是否有關閉的按鈕
* @param array $alertLinks 文字中連結,陣列格式為 key => url
* @return string
*/
public function alert(string $content = '', string $type = 'primary', $dismiss = true, array $alertLinks = [])
{
$allowedTypes = [
'primary',
'secondary',
'success',
'danger',
'warning',
'info',
'light',
'dark',
];
if(in_array(strtolower($type), $allowedTypes)) {
if(!empty($alertLinks)) {
foreach ($alertLinks as $key => $link) {
$linkHtmlArgs = [
'href' => $link['url'],
'class' => 'alert-link',
'html' => $link['content']
];
if(!empty($link['target'])) {
$linkHtmlArgs['target'] = $link['target'];
}
$linkHtml = $this->tag('a', $linkHtmlArgs);
$content = str_replace(":$key", $linkHtml, $content);
}
}
$dismissButtonHtml = '';
if($dismiss) {
$dismissButtonHtml = $this->tag('button', [
'type' => 'button',
'class' => 'close',
'data-dismiss' => 'alert',
'aria-label' => 'Close',
'html' => $this->tag('span', [
'aria-hidden' => 'true',
'html' => '×'
])
]);
}
$htmlArgs = [
'class' => [
'alert',
'alert-' . $type,
],
'html' => $content . $dismissButtonHtml
];
if($dismiss) {
$htmlArgs['class'][] = 'alert-dismissible fade show';
}
return $this->tag('div', $htmlArgs);
} else {
return '';
}
}
/**
* 返回Breadcrumb元件的Html
*
* @param array $items
* @return string
*/
public function breadcrumb(array $items = [])
{
$html = $this->tag('nav', [
'aria-label' => 'breadcrumb',
'html' => $this->tag('ol', [
'class' => 'breadcrumb',
'html' => function() use ($items) {
$itemsHtml = '';
foreach ((array)$items as $item) {
$args = [
'class' => [
'breadcrumb-item'
],
'html' => !empty($item['content']) ? $item['content'] : ''
];
if(!empty($item['active'])) {
$args['class'][] = 'active';
$args['aria-current'] = 'page';
$args['html'] = $this->tag('a', [
'href' => !empty($item['href']) ? $item['href'] : '#',
'html' => !empty($item['content']) ? $item['content'] : ''
]);
}
$itemsHtml .= $this->tag('li', $args);
}
return $itemsHtml;
}
])
]);
return $html;
}
}