来一个Bootstrap的表单标签库,附上附件
经常用Bootstrap开发后台,搞了一个标签库<?php <br />
namespace Think\Template\TagLib;<br>
<br>
use Think\Template\TagLib;<br>
<br>
class Bootstrap extends TagLib<br>
{<br>
<br>
protected $tags = array(<br>
/**<br>
* id 自定义ID,不定义默认(input+表单name)<br>
* class 自定义class<br>
* help 表单的输入说明 显示再表单下方<br>
* status 当前表单的初始化状态,可选值 :success,error,warning 三个值选其一<br>
* inline 内联表单<br>
* horizontal 水平排列的表单【说明:两个数字,逗号分割,实用这个排列方式需要在表单上面添加 form-horizontal】【示例:horizontal="3,9"】<br>
*/<br>
'text' => array('attr' => array('id', 'class', 'name', 'value', 'label', 'placeholder', 'help', 'status', 'inline', 'horizontal'), 'close' => 0),<br>
'password' => array('attr' => array('id', 'class', 'name', 'label', 'placeholder', 'help', 'status', 'inline', 'horizontal'), 'close' => 0),<br>
'number' => array('attr' => array('id', 'class', 'name', 'value', 'label', 'placeholder', 'help', 'status', 'inline', 'horizontal'), 'close' => 0),<br>
'email' => array('attr' => array('id', 'class', 'name', 'value', 'label', 'placeholder', 'help', 'status', 'inline', 'horizontal'), 'close' => 0),<br>
'url' => array('attr' => array('id', 'class', 'name', 'value', 'label', 'placeholder', 'help', 'status', 'inline', 'horizontal'), 'close' => 0),<br>
'file' => array('attr' => array('id', 'class', 'name', 'label', 'help', 'inline', 'horizontal'), 'close' => 0),<br>
'checkbox' => array('attr' => array('id', 'class', 'name', 'label', 'inline', 'disabled', 'checked', 'default'), 'close' => 0),<br>
'radio' => array('attr' => array('id', 'class', 'name', 'label', 'inline', 'disabled', 'checked', 'default'), 'close' => 0),<br>
/**<br>
* key : value值字段名称,默认id<br>
* text : 显示值字段名称,默认name<br>
*/<br>
'textarea' => array('attr' => array('id', 'class', 'name', 'label', 'value', 'label', 'rows', 'key', 'text', 'horizontal'), 'close' => 0),<br>
'select' => array('attr' => array('id', 'class', 'name', 'label', 'data', 'value', 'key', 'horizontal'), 'close' => 0)<br>
);<br>
private $ids = array();//自动生产ID保存,防止重复<br>
<br>
/**<br>
* @param $id string input的ID<br>
* @param $name string input的name值<br>
* @return string<br>
*/<br>
protected function setId($id, $name)<br>
{<br>
return empty($id) ? 'input' . ucfirst($name) . mt_rand(1, 9999) : $id;<br>
}<br>
<br>
/**<br>
* 根据表单的状态返回图标和状态<br>
* @param $status 表单当前的状态<br>
* @return array()<br>
*/<br>
protected function inputStatus($attr)<br>
{<br>
switch ($attr['status']) {<br>
case 'success':<br>
$icon = '<span></span>';<br>
$class = 'has-success';<br>
break;<br>
case 'error':<br>
$icon = '<span></span>';<br>
$class = 'has-error';<br>
break;<br>
case 'warning':<br>
$icon = '<span></span>';<br>
$class = 'has-warning';<br>
break;<br>
default:<br>
$icon = '';<br>
$class = '';<br>
break;<br>
}<br>
$icon = empty($icon) ? $icon : $icon . '<span>(' . $attr['status'] . ')</span>';<br>
return array('statusClass' => $class, 'icon' => $icon);<br>
}<br>
<br>
protected function wrapDiv($attr)<br>
{<br>
$class = array();<br>
if (!empty($attr['inline'])) array_push($class, 'form-inline');<br>
if (!empty($attr['statusClass'])) array_push($class, $attr['statusClass']);<br>
if (!empty($attr['has_feedback'])) array_push($class, $attr['has_feedback']);<br>
if (!empty($attr['class'])) array_push($class, $attr['class']);<br>
if (empty($attr['typeClass'])) {<br>
//输入类型<br>
array_push($class, 'form-group');<br>
} else {<br>
//选择类型 checkbox radio<br>
array_push($class, $attr['typeClass']);<br>
}<br>
return '<div>';<br>
}<br>
<br>
protected function wrapLabel($attr)<br>
{<br>
$id = $attr['id'];<br>
$width = '';<br>
if (array_key_exists('horizontal', $attr) && !empty($attr['horizontal'])) {<br>
$width = 'col-xs-' . $attr['horizontal'][0];<br>
}<br>
$typeClass = empty($attr['typeClass']) ? 'control-label' : $attr['typeClass'];<br>
return '<label>';<br>
}<br>
<br>
protected function input($attr)<br>
{<br>
$attrs = array();<br>
if (!empty($attr['placeholder'])) array_push($attrs, $attr['placeholder']);//输入框描述<br>
if (!empty($attr['describedby'])) array_push($attrs, $attr['describedby']);//输入框与图标关联,<br>
if (empty($attr['typeClass'])) {<br>
//没有这个类型为输入框类型 text/password/email....<br>
array_push($attrs, 'class="form-control"');//calss 属性<br>
if (!empty($attr['value'])) array_push($attrs, 'value=' . $attr['value']);//默认值<br>
} else {<br>
//选择类型 checkbox/radio<br>
if (!empty($attr['default'])) {<br>
$default = $this->_trim($attr['default']);<br>
$default = explode('.', $default);<br>
$default = $default[0] . "['" . $default[1] . "']";<br>
$checked = '<?php if(' . $default . ' == ' . $attr['value'] . '){ echo "checked" ; } ?>';<br>
} else {<br>
$checked = empty($attr['checked']) ? '' : 'checked';<br>
}<br>
if (!empty($attr['disabled'])) array_push($attrs, 'disabled');//是否禁用<br>
array_push($attrs, $checked);//默认值判断<br>
}<br>
$input = "<input>";<br>
return $input . $attr['icon'] . $attr['help'];<br>
}<br>
<br>
/**<br>
* 输入框默认表单赋值<br>
* @param $attr<br>
*/<br>
protected function set_input_attr($attr)<br>
{<br>
$attr['id'] = $this->setId($attr['id'], $attr['name']);<br>
$status = $this->inputStatus($attr);<br>
$attr['statusClass'] = $status['statusClass'];//wrapDiv上面显示<br>
$attr['icon'] = $status['icon'];//wrapLabel上面显示<br>
$attr['has_feedback'] = empty($status['icon']) ? '' : 'has-feedback';//wrapDiv上面显示<br>
$attr['describedby'] = empty($status['icon']) ? '' : 'aria-describedby="' . $attr['id'] . 'Status"';//表单上关联图标<br>
$attr['help'] = empty($attr['help']) ? '' : '<span>' . $attr['help'] . '</span>';<br>
$attr['placeholder'] = empty($attr['placeholder']) ? '' : 'placeholder="' . $attr['placeholder'] . '"';<br>
if (array_key_exists('horizontal', $attr) && !empty($attr['horizontal'])) {<br>
$attr['horizontal'] = explode(',', $attr['horizontal']);<br>
}<br>
return $attr;<br>
}<br>
<br>
public function _text($attr)<br>
{<br>
$attr['type'] = 'text';<br>
return $this->inputClass($attr);<br>
}<br>
<br>
public function _password($attr)<br>
{<br>
$attr['type'] = 'password';<br>
return $this->inputClass($attr);<br>
}<br>
<br>
public function _email($attr)<br>
{<br>
$attr['type'] = 'email';<br>
return $this->inputClass($attr);<br>
}<br>
<br>
public function _number($attr)<br>
{<br>
$attr['type'] = 'number';<br>
return $this->inputClass($attr);<br>
}<br>
<br>
public function _url($attr)<br>
{<br>
$attr['type'] = 'url';<br>
return $this->inputClass($attr);<br>
}<br>
<br>
public function _file($attr)<br>
{<br>
$attr['type'] = 'file';<br>
return $this->inputClass($attr);<br>
}<br>
<br>
public function _checkbox($attr)<br>
{<br>
$attr['typeClass'] = empty($attr['inline']) ? 'checkbox' : 'checkbox-inline';<br>
$attr['type'] = 'checkbox';<br>
return $this->checkClass($attr);<br>
}<br>
<br>
public function _radio($attr)<br>
{<br>
$attr['typeClass'] = empty($attr['inline']) ? 'radio' : 'radio-inline';<br>
$attr['type'] = 'radio';<br>
return $this->checkClass($attr);<br>
}<br>
<br>
public function _textarea($attr)<br>
{<br>
$id = $this->setId($attr['id'], $attr['name']);<br>
$textarea = '<textarea>' . $attr['value'] . '</textarea>';<br>
return $this->_return($attr, $textarea);<br>
}<br>
<br>
//选择类型表单<br>
protected function checkClass($attr)<br>
{<br>
$attr = $this->set_input_attr($attr);<br>
$input = $this->input($attr);<br>
$div = $this->wrapDiv($attr);<br>
$label = $this->wrapLabel($attr);<br>
return $div . $label . $input . $attr['label'] . '</label>
</div>';<br>
}<br>
<br>
//输出输入类型表单<br>
protected function inputClass($attr)<br>
{<br>
$input = $this->input($attr);<br>
return $this->_return($attr, $input);<br>
}<br>
<br>
//去除左右花括号<br>
private function _trim($field)<br>
{<br>
$field = ltrim($field, '{');<br>
return rtrim($field, '}');<br>
}<br>
<br>
public function _select($attr)<br>
{<br>
$data = $this->_trim($attr['data']);<br>
$key = empty($attr['key']) ? 'id' : $attr['key'];<br>
$text = empty($attr['text']) ? 'name' : $attr['text'];<br>
$value = $attr['value'];<br>
$id = $this->setId($attr['id'], $attr['name']);<br>
if (strpos($value, '{') !== false) {<br>
$value = $this->_trim($value);<br>
}<br>
$select = '<select>';<br>
$select .= '<?php foreach(' . $data . ' as $v): ?>';<br>
$select .= '<option> >{$v.' . $text . '}</option>';<br>
$select .= '<?php endforeach; ?>';<br>
$select .= '</select>';<br>
return $this->_return($attr, $select);<br>
<br>
}<br>
<br>
public function _return($attr, $form)<br>
{<br>
//判断是不是水平排列的表单<br>
$horizontal = false;<br>
if (array_key_exists('horizontal', $attr) && !empty($attr['horizontal'])) {<br>
$horizontal = true;;<br>
}<br>
$attr = $this->set_input_attr($attr);<br>
$div = $this->wrapDiv($attr);<br>
$label = $this->wrapLabel($attr);<br>
<br>
if ($horizontal) {<br>
return $div . $label . $attr['label'] . '<div>' . $form . '</div>';<br>
} else {<br>
return $div . $label . $attr['label'] . '' . $form . '';<br>
}<br>
}<br>
<br>
<br>
}
调用<taglib></taglib><br>
<?php <br />
<br>
$area = array(<br>
array('id'=>0,'name'=>'北京'),<br>
array('id'=>1,'name'=>'上海'),<br>
array('id'=>2,'name'=>'天津'),<br>
array('id'=>3,'name'=>'深圳')<br>
);<br>
$member = array(<br>
'gender'=>2,<br>
'email'=>'314231604@qq.com',<br>
'sleep'=>1,<br>
'eat'=>1,<br>
'username'=>'小二郎',<br>
'url'=>'http://www.baidu.com'<br>
) ;<br>
?><br>
<form>
<br>
<text></text><br>
<email></email><br>
<password></password><br>
<url></url><br>
<number></number><br>
<file></file><br>
<div>
<br>
<div>爱好</div>
<br>
<div>
<br>
<checkbox></checkbox><br>
<checkbox></checkbox><br>
</div>
<br>
</div>
<br>
<div>
<br>
<div>性别</div>
<br>
<div>
<br>
<radio></radio><br>
<radio></radio><br>
</div>
<br>
</div>
<br>
<textarea></textarea><br>
<select></select><br>
</form>
运行效果
Bootstrap标签库.rar
( 3.94 KB 下载:52 次 )
AD:真正免费,域名+虚机+企业邮箱=0元

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

了解Python程式設計的入門程式碼範例Python是一種簡單易學,功能強大的程式語言。對於初學者來說,了解Python程式設計的入門級程式碼範例是非常重要的。本文將為您提供一些具體的程式碼範例,幫助您快速入門。列印HelloWorldprint("HelloWorld")這是Python中最簡單的程式碼範例。 print()函數用於將指定的內容輸出

PHP變數儲存程式運行期間的值,對於建立動態且互動的WEB應用程式至關重要。本文將深入探討php變量,並透過10個真實的範例展示它們的實際應用。 1.儲存使用者輸入$username=$_POST["username"];$passWord=$_POST["password"];此範例從表單提交中提取使用者名稱和密碼,並將其儲存在變數中以供進一步處理。 2.設定配置值$database_host="localhost";$database_username="username";$database_pa

《Go語言程式設計實例:Web開發中的程式碼範例》隨著網路的快速發展,Web開發已成為各行業中不可或缺的一部分。作為一門功能強大且效能優越的程式語言,Go語言在Web開發中越來越受到開發者們的青睞。本文將透過具體的程式碼範例,介紹如何利用Go語言進行Web開發,讓讀者更能理解並運用Go語言來建立自己的Web應用。 1.簡單的HTTP伺服器首先,讓我們從一個

Java冒泡排序最簡單的程式碼範例冒泡排序是一種常見的排序演算法,它的基本想法是透過相鄰元素的比較和交換來將待排序序列逐步調整為有序序列。以下是一個簡單的Java程式碼範例,示範如何實作冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

標題:從入門到精通:Go語言中常用資料結構的程式碼實作資料結構在程式設計中起著至關重要的作用,它是程式設計的基礎。在Go語言中,有許多常用的資料結構,掌握這些資料結構的實作方式對於成為優秀的程式設計師至關重要。本文將介紹Go語言中常用的資料結構,並給出對應的程式碼範例,幫助讀者從入門到精通這些資料結構。 1.數組(Array)數組是一種基本的資料結構,是一組相同類型

如何使用PHP編寫庫存管理系統中的庫存分倉管理功能碼庫存管理是許多企業中不可或缺的一部分。對於擁有多個倉庫的企業來說,庫存分倉管理功能尤其重要。透過合理管理和追蹤庫存,企業可以實現不同倉庫之間的庫存調撥,優化營運成本,改善協同效率。本文將介紹如何使用PHP編寫庫存分倉管理功能的程式碼,並為您提供相關的程式碼範例。一、建立資料庫在開始編寫庫存分倉管理功能的程式碼之

Java選擇排序法程式碼編寫指南及範例選擇排序是一種簡單直觀的排序演算法,其想法是每次從未排序的元素中選擇最小(或最大)的元素進行交換,直到所有元素排序完成。本文將提供選擇排序的程式碼編寫指南,並附上具體的Java範例程式碼。演算法原理選擇排序的基本原理是將待排序數組分為已排序和未排序兩部分,每次從未排序部分選擇最小(或最大)的元素,將其放到已排序部分的末尾。重複上述

華為雲端邊緣運算對接指南:Java程式碼範例快速實現介面隨著物聯網技術的快速發展和邊緣運算的興起,越來越多的企業開始關注邊緣運算的應用。華為雲端提供了邊緣運算服務,為企業提供了高可靠的運算資源和便利的開發環境,使得邊緣運算應用更容易實現。本文將介紹如何透過Java程式碼快速實現華為雲端邊緣運算的介面。首先,我們需要準備好開發環境。確保你已經安裝了Java開發工具包(
