PHPフォームジェネレータは、近代的なformフォームを迅速に生成し、迅速に手を打つ.
form-builder
PHPフォームジェネレータは、近代的なformフォームを迅速に生成します.チェックボックス、ラジオボックス、入力ボックス、ドロップダウン選択ボックスなどの要素と、省市区の3級連動、時間選択、日付選択、色選択、ツリー型、ファイル/画像アップロードなどの機能が含まれています.
詳細は、Githubアドレス|Componentアドレス
プレゼンテーションプロジェクト:オープンソースの高品質微信商城
本プロジェクトは継続的に開発され、改善されています.
インストール
例
例(TPフレームワーク)
バージョン1の編集権限
効果
バージョン2製品の追加
効果
バージョン3製品の編集
効果
formのコミットに成功するとwindowが呼び出されます.formCreate.formSuccess(res,$f,formData)をコールバックメソッドとして
コード#コード#
AJAX要求復帰 Json::succ(msg,data=[])フォーム提出成功 Json::fail(errorMsg,data=[])フォームのコミットに失敗しました Json::uploadSucc(file Path,msg)ファイル/ピクチャのアップロードに成功し、アップロードに成功した後、ファイルアドレス に戻る Json::uploadFail(errorMsg)ファイル/画像のアップロードに失敗しました Formフォーム生成クラス components(array$components=[])一括追加コンポーネント formRow(Row$row)設定フォームRowルール formStyle(FormStyle$formStyle)フォームスタイル を設定 setAction($action)設定コミットアドレス getConfig($key=')設定プロファイル setMethod($method)設定コミット方式 setMethod($method)設定コミット方式 append(FormComponentDriver$component)追加コンポーネント prepend(FormComponentDriver$component)先頭挿入コンポーネント getRules()フォームルール を取得 view()フォームビュー を取得 script()フォームジェネレータを取得するために必要なすべてのjs formScript()フォームを生成するjsコードを取得し、js変数で生成関数 を生成できる. getScript()フォームジェネレータの取得に必要なjs create($action,array$components=[])フォームショートカットを生成する settitle($title)設定title FormStyleフォームスタイル Form::style
Rowグリッド規則 Form::row
参考:view rowグリッドレイアウト
Colグリッド規則 Form::col
参考:view colグリッドレイアウト
select,checkbox,radioコンポーネント構成options専用メソッド option($value,$label,$disabled=false)個別設定オプション options(array$options,$disabled=false)バッチ設定オプション setOptions($options,$disabled=false)バッチ設定オプション匿名関数 をサポート
次のコンポーネントの共通メソッド col($span)colグリッド規則を構成し、0-24の数値または です. value($value)コンポーネントの値 を設定 validate(array$validate)検証ルール を追加
コンポーネント
たじゅうれんさコンポーネント Form::cascaderマルチレベル連動コンポーネント、valueはarrayタイプ Form::city省市二級連動、valueはarrayタイプ Form::cityArea省市街地三級連動、valueはarrayタイプ
チェックボックスコンポーネント Form::checkbox
カラー選択コンポーネント Form::color
日付選択コンポーネント Form::date日付選択 Form::dateRange日付区間選択、valueはarrayタイプ Form::dateTime日付+時間選択 Form::dateTimeRange日付+時間区間選択、valueはarrayタイプ Form::year年選択 Form::month月選択
フレームコンポーネント Form::frame frameコンポーネント Form::frameInputs frameコンポーネント、inputタイプ、valueはarrayタイプ Form::frameFiles frameコンポーネント、fileタイプ、valueはarrayタイプ Form::frameImages frameコンポーネント、imageタイプ、valueはarrayタイプ Form::frameInputOne frameコンポーネント、inputタイプ、valueはstring|numberタイプ Form::frameFileOne frameコンポーネント、fileタイプ、valueはstring|numberタイプ Form::frameImageOne frameコンポーネント、imageタイプ、valueはstring|numberタイプ
hiddenコンポーネント Form::hidden hiddenコンポーネント 数値入力ボックスコンポーネント Form::number
Input入力ボックスコンポーネント Form::input input入力ボックス その他type:textタイプ
ラジオボックスコンポーネント Form::radio
評価コンポーネント Form::rate
select選択ボックスコンポーネント Form::select選択ボックス Form::selectMultiple select選択ボックス、複数選択、valueはarrayタイプ Form::selectOne select選択ボックス、ラジオ
スライダアセンブリ Form::sliderスライダアセンブリ Form::sliderRangeスライダアセンブリ、区間選択、
スイッチアセンブリ Form::switches
時間選択コンポーネント Form::timePicker時間選択コンポーネント Form::time時間選択 Form::timeRange時間区間選択、valueはarrayタイプ
コンポーネントのアップロード Form::uploadアップロードコンポーネント Form::uploadImagesマルチグラフアップロードコンポーネント、valueはarrayタイプ Form::uploadFilesマルチファイルアップロードコンポーネント、valueはarrayタイプ Form::uploadImageOne単図アップロードコンポーネント Form::uploadFileOneシングルファイルアップロードコンポーネント
ツリーコンポーネント Form::treeツリー型コンポーネント Form::treeSelected選択タイプ、valueがarrayタイプ、 Form::treeChecked選択タイプ、valueはarrayタイプ
ツリー型コンポーネントdataデータクラスTreeData Form::treeDataツリー型コンポーネントdata
すべてのコンポーネントが効果を生成
リファレンス uiフレームワーク:iview 2.x jsフォームジェネレータ:form-create 転載先:https://www.cnblogs.com/xaboy/p/9226600.html
PHPフォームジェネレータは、近代的なformフォームを迅速に生成します.チェックボックス、ラジオボックス、入力ボックス、ドロップダウン選択ボックスなどの要素と、省市区の3級連動、時間選択、日付選択、色選択、ツリー型、ファイル/画像アップロードなどの機能が含まれています.
詳細は、Githubアドレス|Componentアドレス
プレゼンテーションプロジェクト:オープンソースの高品質微信商城
本プロジェクトは継続的に開発され、改善されています.
インストール
composer require xaboy/form-builder
例
例(TPフレームワーク)
バージョン1の編集権限
$form = Form::create(Url::build('update',array('id'=>$id)),[
Form::input('menu_name',' ',$menu['menu_name']),
Form::select('pid',' id',(string)$menu->getData('pid'))->setOptions(function()use($id){
$list = (Util::sortListTier(MenusModel::where('id','<>',$id)->select()->toArray(),' ','pid','menu_name'));
$menus = [['value'=>0,'label'=>' ']];
foreach ($list as $menu){
$menus[] = ['value'=>$menu['id'],'label'=>$menu['html'].$menu['menu_name']];
}
return $menus;
})->filterable(1),
Form::select('module',' ',$menu['module'])->options([['label'=>' ','value'=>'admin'],['label'=>' 1','value'=>'admin1']]),
Form::input('controller',' ',$menu['controller']),
Form::input('action',' ',$menu['action']),
Form::input('params',' ',MenusModel::paramStr($menu['params']))->placeholder(' :a/123/b/234'),
Form::frameInputOne('icon',' ',Url::build('admin/widget.widgets/icon',array('fodder'=>'icon')),$menu['icon'])->icon('ionic'),
Form::number('sort',' ',$menu['sort']),
Form::radio('is_show',' ',$menu['is_show'])->options([['value'=>0,'label'=>' '],['value'=>1,'label'=>' ( )']])
]);
$form->setMethod('post')->setTitle(' ');
$this->assign(compact('form'));
return $this->fetch('public/form-builder');
効果
バージョン2製品の追加
$field = [
Form::select('cate_id',' ')->setOptions(function(){
$list = CategoryModel::getTierList();
foreach ($list as $menu){
$menus[] = ['value'=>$menu['id'],'label'=>$menu['html'].$menu['cate_name'],'disabled'=>$menu['pid']== 0];//,'disabled'=>$menu['pid']== 0];
}
return $menus;
})->filterable(1)->multiple(1),
Form::input('store_name',' ')->col(Form::col(8)),
Form::input('store_info',' ')->type('textarea'),
Form::input('keyword',' ')->placeholder(' '),
Form::input('unit_name',' ',' '),
Form::frameImageOne('image',' (305*305px)',Url::build('admin/widget.images/index',array('fodder'=>'image')))->icon('image')->width('100%')->height('550px'),
Form::frameImages('slider_image',' (640*640px)',Url::build('admin/widget.images/index',array('fodder'=>'slider_image')))->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0),
Form::number('price',' ')->min(0)->col(8),
Form::number('ot_price',' ')->min(0)->col(8),
Form::number('give_integral',' ')->min(0)->precision(0)->col(8),
Form::number('postage',' ')->min(0)->col(Form::col(8)),
Form::number('sales',' ')->min(0)->precision(0)->col(8),
Form::number('ficti',' ')->min(0)->precision(0)->col(8),
Form::number('stock',' ')->min(0)->precision(0)->col(8),
Form::number('cost',' ')->min(0)->col(8),
Form::number('sort',' ')->col(8),
Form::radio('is_show',' ',0)->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_hot',' ',0)->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_benefit',' ',0)->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_best',' ',0)->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_new',' ',0)->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_postage',' ',0)->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8)
];
$form = Form::create(Url::build('save'));
$form->setMethod('post')->setTitle(' ')->components($field);
$this->assign(compact('form'));
return $this->fetch('public/form-builder');
効果
バージョン3製品の編集
$product = ProductModel::get($id);
$form = Form::create(Url::build('update',array('id'=>$id)),[
Form::select('cate_id',' ',explode(',',$product->getData('cate_id')))->setOptions(function(){
$list = CategoryModel::getTierList();
foreach ($list as $menu){
$menus[] = ['value'=>$menu['id'],'label'=>$menu['html'].$menu['cate_name'],'disabled'=>$menu['pid']== 0];//,'disabled'=>$menu['pid']== 0];
}
return $menus;
})->filterable(1)->multiple(1),
Form::input('store_name',' ',$product->getData('store_name')),
Form::input('store_info',' ',$product->getData('store_info'))->type('textarea'),
Form::input('keyword',' ',$product->getData('keyword'))->placeholder(' '),
Form::input('unit_name',' ',$product->getData('unit_name')),
Form::frameImageOne('image',' (305*305px)',Url::build('admin/widget.images/index',array('fodder'=>'image')),$product->getData('image'))->icon('image')->width('100%')->height('550px'),
Form::frameImages('slider_image',' (640*640px)',Url::build('admin/widget.images/index',array('fodder'=>'slider_image')),json_decode($product->getData('slider_image'),1))->maxLength(5)->icon('images'),
Form::number('price',' ',$product->getData('price'))->min(0)->precision(2)->col(8),
Form::number('ot_price',' ',$product->getData('ot_price'))->min(0)->col(8),
Form::number('give_integral',' ',$product->getData('give_integral'))->min(0)->precision(0)->col(8),
Form::number('postage',' ',$product->getData('postage'))->min(0)->col(8),
Form::number('sales',' ',$product->getData('sales'))->min(0)->precision(0)->col(8),
Form::number('ficti',' ',$product->getData('ficti'))->min(0)->precision(0)->col(8),
Form::number('stock',' ',ProductModel::getStock($id)>0?ProductModel::getStock($id):$product->getData('stock'))->min(0)->precision(0)->col(8),
Form::number('cost',' ',$product->getData('cost'))->min(0)->col(8),
Form::number('sort',' ',$product->getData('sort'))->col(8),
Form::radio('is_show',' ',$product->getData('is_show'))->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_hot',' ',$product->getData('is_hot'))->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_benefit',' ',$product->getData('is_benefit'))->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_best',' ',$product->getData('is_best'))->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_new',' ',$product->getData('is_new'))->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8),
Form::radio('is_postage',' ',$product->getData('is_postage'))->options([['label'=>' ','value'=>1],['label'=>' ','value'=>0]])->col(8)
]);
$form->setMethod('post')->setTitle(' ');
$this->assign(compact('form'));
return $this->fetch('public/form-builder');
効果
formのコミットに成功するとwindowが呼び出されます.formCreate.formSuccess(res,$f,formData)をコールバックメソッドとして
コード#コード#
namespace Test;
use FormBuilder\Form;
//input
$input = Form::input('goods_name',' ');
//
$dateRange = Form::dateRange(
'limit_time',
' ',
strtotime('- 10 day'),
time()
);
//
$cityArea = Form::city('address',' ',[
' ',' '
]);
$checkbox = Form::checkbox('label',' ',[])->options([
['value'=>'1','label'=>' ','disabled'=>true],
['value'=>'2','label'=>' ','disabled'=>true]
])->col(Form::col(12));
$tree = Form::treeChecked('tree',' ',[])->data([
Form::treeData(11,'leaf 1-1-1')->children([Form::treeData(13,'131313'),Form::treeData(14,'141414')]),
Form::treeData(12,'leaf 1-1-2')
])->col(Form::col(12)->xs(12));
// form
$form = Form::create('/save.php',[
$input,$dateRange,$cityArea,$checkbox,$tree
]);
$html = $form->formRow(Form::row(10))->setMethod('get')->setTitle(' ')->view();
// form
echo $html;
AJAX要求復帰
namespace \FormBuilder\Json
namespace \FormBuilder\Form
create
を受け入れる、create(el,callback)
を実行すればフォーム* @method $this inline(Boolean $bool)
* @method $this labelPosition(String $labelPosition) , left、right、top
* @method $this labelWidth(Number $labelWidth) , FormItem Form label-width
* @method $this showMessage(Boolean $bool)
* @method $this autocomplete($bool = false) autocomplete , true = off false = on
Rowグリッド規則
* @method $this gutter(Number $gutter) , px,
* @method $this type(String $type) , flex
* @method $this align(String $align) flex , top、middle、bottom
* @method $this justify(String $justify) flex , start、end、center、space-around、space-between
* @method $this className(String $className) class
参考:view rowグリッドレイアウト
Colグリッド規則
* @method $this span(Number $span) , 0~24 , 0 , display:none
* @method $this order(Number $order) , flex
* @method $this offset(Number $offset) ,
* @method $this push(Number $push)
* @method $this pull(Number $pull)
* @method $this labelWidth(Number $labelWidth) , 150px
* @method $this className(String $className) class
* @method $this xs(Number|Col $span) <768px ,
* @method $this sm(Number|Col $span) ≥768px ,
* @method $this md(Number|Col $span) ≥992px ,
* @method $this lg(Number|Col $span) ≥1200px ,
参考:view colグリッドレイアウト
select,checkbox,radioコンポーネント構成options専用メソッド
次のコンポーネントの共通メソッド
Col
クラスを入力します.デフォルトは24 コンポーネント
namespace \FormBuilder\Form
たじゅうれんさコンポーネント
( )
* @method $this type(String $type) , city_area( ), city ( ), other ( )
* @method $this disabled(Boolean $bool)
* @method $this clearable(Boolean $bool)
* @method $this placeholder(String $placeholder)
* @method $this trigger(String $trigger) , click hover
* @method $this changeOnSelect(Boolean $bool) true , , false
* @method $this size(String $size) , large small
* @method $this filterable(Boolean $bool)
* @method $this notFoundText(String $text)
* @method $this transfer(Boolean $bool) / body , Tabs、 fixed Table , , ,
* @method $this required($message = null, $trigger = 'change')
* @method $this data(array $data)
* : {
* "value":" ", "label":" ", "children":[{
* "value":" ", "label":" "
* }]
* }
* @method $this jsData($var) data js
* @method string getType($var)
チェックボックスコンポーネント
* @method $this size(String $size) , large、small、default
* @method $this required($message = null, $trigger = 'change')
カラー選択コンポーネント
* @method $this disabled(Boolean $bool)
* @method $this alpha(Boolean $bool) , false
* @method $this hue(Boolean $bool) , true
* @method $this recommend(Boolean $bool) , false
* @method $this size(String $size) , large、small、default
* @method $this format(String $format) , hsl、hsv、hex、rgb String alpha rgb, hex
* @method $this required($message = null, $trigger = 'change')
* @method $this colors($colors)
日付選択コンポーネント
* @method $this type(String $type) , date、daterange、datetime、datetimerange、year、month
* @method $this format(String $format) , yyyy-MM-dd HH:mm:ss
* @method $this placement(String $placement) , top, top-start, top-end, bottom, bottom-start, bottom-end, left, left-start, left-end, right, right-start, right-end, bottom-start
* @method $this placeholder(String $placeholder)
* @method $this confirm(Boolean $bool) , , , , , false
* @method $this size(String $size) , large、small、default
* @method $this disabled(Boolean $bool)
* @method $this clearable(Boolean $bool)
* @method $this readonly(Boolean $bool) , , open
* @method $this editable(Boolean $bool) , false
* @method $this transfer(Boolean $bool) body , Tabs、 fixed Table , , , , false
* @method $this splitPanels(Boolean $bool) , , daterange datetimerange 。
* @method $this showWeekNumbers(Boolean $bool) , 。
フレームコンポーネント
* @method $this type(String $type) frame , input, file, image, input
* @method $this src(String $src) iframe
* @method $this maxLength(int $length) value ,
* @method $this icon(String $icon)
* @method $this height(String $height)
* @method $this width(String $width)
* @method $this spin(Boolean $bool) , true
* @method $this frameTitle(String $title)
* @method $this handleIcon(Boolean $bool) , false , true , file false, image true
* @method $this allowRemove(Boolean $bool) , false
hiddenコンポーネント
* @method $this max(float $max)
* @method $this min(float $min)
* @method $this step(float $step) ,
* @method $this size(String $size) , large、small、default
* @method $this disabled(Boolean $bool) , false
* @method $this placeholder(String $placeholder)
* @method $this readonly(Boolean $bool) , false
* @method $this editable(Boolean $bool) , true
* @method $this precision(int $precision)
Input入力ボックスコンポーネント
Form::text
、passwordタイプForm::password
、textareaタイプForm::textarea
、urlタイプForm::url
、emailタイプForm::email
、dateタイプForm::idate
* @method $this type(String $type) , text、password、textarea、url、email、date;
* @method $this size(String $size) , large、small、default ;
* @method $this placeholder(String $placeholder)
* @method $this clearable(Boolean $bool) , false
* @method $this disabled(Boolean $bool) , false
* @method $this readonly(Boolean $bool) , false
* @method $this maxlength(int $length)
* @method $this icon(String $icon) , text
* @method $this rows(int $rows) , textarea , 2
* @method $this number(Boolean $bool) Number , false
* @method $this autofocus(Boolean $bool) , false
* @method $this autocomplete(Boolean $bool) , false
* @method $this spellcheck(Boolean $bool) spellcheck , false
* @method $this wrap(String $warp) wrap , hard soft, soft
* @method $this autoSize($minRows, $maxRows) , textarea
ラジオボックスコンポーネント
* @method $this size(String $size) , large、small、default
* @method $this vertical(Boolean $bool) ,
* @method $this button()
* @method $this required($message = null, $trigger = 'change')
評価コンポーネント
* @method $this count(int $star) star , 5
* @method $this allowHalf(Boolean $bool) , false
* @method $this disabled(Boolean $bool) , ,
* @method $this showText(Boolean $bool) , false
* @method $this clearable(Boolean $bool) , false
select選択ボックスコンポーネント
* @method $this multiple(Boolean $bool) , false
* @method $this disabled(Boolean $bool) , false
* @method $this clearable(Boolean $bool) , , false
* @method $this filterable(Boolean $bool) , false
* @method $this size(String $size) , large、small、default
* @method $this placeholder(String $placeholder)
* @method $this transfer(String $transfer) body , Tabs、 fixed Table , , , , false
* @method $this placement(String $placement) , bottom top, bottom
* @method $this notFoundText(String $text) ,
* @method $this required($message = null, $trigger = 'change')
スライダアセンブリ
* @method $this min(float $min) , 0
* @method $this max(float $max) , 100
* @method $this step(float $step) , (max - min) , 1
* @method $this disabled(Boolean $bool) , false
* @method $this range(Boolean $bool) ,
* @method $this showInput(Boolean $bool) , , false
* @method $this showStops(Boolean $bool) , step , false
* @method $this showTip(String $tip) , hover( , )、always( )、never( )
* @method $this inputSize(String $size) , large、small、default , show-input
スイッチアセンブリ
* @method $this size(String $size) , large、small、default 。 2 , large。
* @method $this disabled(Boolean $bool) , false
* @method $this trueValue(String $value) , 1
* @method $this falseValue(String $value) , 0
* @method $this openStr(String $open)
* @method $this closeStr(String $close)
時間選択コンポーネント
* @method $this type(String $type) , time、timerange
* @method $this format(String $format) , HH:mm:ss
* @method $this placement(String $placement) , top, top-start, top-end, bottom, bottom-start, bottom-end, left, left-start, left-end, right, right-start, right-end, bottom-start
* @method $this placeholder(String $placeholder)
* @method $this confirm(Boolean $bool) , false
* @method $this size(String $size) , large、small、default
* @method $this disabled(Boolean $bool)
* @method $this clearable(Boolean $bool)
* @method $this readonly(Boolean $bool) , , open
* @method $this editable(Boolean $bool) , false
* @method $this transfer(Boolean $bool) body , Tabs、 fixed Table , , , , false
* @method $this steps($h, $i = 0, $s = 0) , 、 、 , [1, 15] , :00、15、30、45。
コンポーネントのアップロード
* @method $this uploadType(String $uploadType) , image( ),file( )
* @method $this action(String $action)
* @method $this multiple(Boolean $bool)
* @method $this name(String $name)
* @method $this accept(String $accept)
* @method $this maxSize(int $size) , kb
* @method $this withCredentials(Boolean $bool) cookie , false
* @method $this maxLength(Int $length) , 0
* @method $this headers(array $headers)
* @method $this format(array $format) , accept ,format ,accept input accept , ,
* @method $this data(array $data)
* @method $this required($message = null, $trigger = 'change')
ツリーコンポーネント
type=selected
、multiple=false
、値がStringまたはNumberタイプ * @method $this type(String $type) , checked、selected
* @method $this multiple(Boolean $bool) , `type=selected` `multiple=false`, false, String Number , Array
* @method $this showCheckbox(Boolean $bool) , false
* @method $this emptyText(String $emptyText) , ' '
* @method $this data(array $treeData) data,**id **
* @method $this jsData($var) data js
ツリー型コンポーネントdataデータクラスTreeData
* @method $this id(String $id) Id,
* @method $this title(String $title)
* @method $this expand(Boolean $bool) , false
* @method $this disabled(Boolean $bool) , false
* @method $this disableCheckbox(Boolean $bool) checkbox
* @method $this selected(Boolean $bool)
* @method $this checked(Boolean $bool) ( , )
* @method $this children(array $children)
* @method $this child(TreeData $child)
すべてのコンポーネントが効果を生成
リファレンス