PHPフォームジェネレータは、近代的なformフォームを迅速に生成し、迅速に手を打つ.


form-builder
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
  • Json::succ(msg,data=[])フォーム提出成功
  • Json::fail(errorMsg,data=[])フォームのコミットに失敗しました
  • Json::uploadSucc(file Path,msg)ファイル/ピクチャのアップロードに成功し、アップロードに成功した後、ファイルアドレス
  • に戻る
  • Json::uploadFail(errorMsg)ファイル/画像のアップロードに失敗しました
  • Formフォーム生成クラスnamespace \FormBuilder\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変数で生成関数createを受け入れる、create(el,callback)を実行すればフォーム
  • を生成できる.
  • getScript()フォームジェネレータの取得に必要なjs
  • create($action,array$components=[])フォームショートカットを生成する
  • settitle($title)設定title
  • FormStyleフォームスタイル
  • Form::style
  • * @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グリッド規則
  • Form::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グリッド規則
  • Form::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専用メソッド
  • option($value,$label,$disabled=false)個別設定オプション
  • options(array$options,$disabled=false)バッチ設定オプション
  • setOptions($options,$disabled=false)バッチ設定オプション匿名関数
  • をサポート
    次のコンポーネントの共通メソッド
  • col($span)colグリッド規則を構成し、0-24の数値またはColクラスを入力します.デフォルトは24
  • です.
  • value($value)コンポーネントの値
  • を設定
  • validate(array$validate)検証ルール
  • を追加
    コンポーネントnamespace \FormBuilder\Form
    たじゅうれんさコンポーネント
  • Form::cascaderマルチレベル連動コンポーネント、valueはarrayタイプ
  • Form::city省市二級連動、valueはarrayタイプ
  • Form::cityArea省市街地三級連動、valueはarrayタイプ
  •                 (  )     
     * @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)       

     
    チェックボックスコンポーネント
  • Form::checkbox
  •  * @method $this size(String $size)        ,     large、small、default      
     * @method $this required($message = null, $trigger = 'change')     

     
    カラー選択コンポーネント
  • Form::color
  •  * @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)        

     
    日付選択コンポーネント
  • Form::date日付選択
  • Form::dateRange日付区間選択、valueはarrayタイプ
  • Form::dateTime日付+時間選択
  • Form::dateTimeRange日付+時間区間選択、valueはarrayタイプ
  • Form::year年選択
  • Form::month月選択
  •  * @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)    ,       。

     
     

    フレームコンポーネント
  • 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タイプ
  •  * @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コンポーネント
  • Form::hidden hiddenコンポーネント
  • 数値入力ボックスコンポーネント
  • Form::number
  •  * @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::input input入力ボックス
  • その他type:textタイプ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      

     
    ラジオボックスコンポーネント
  • Form::radio
  •  * @method $this size(String $size)       ,     large、small、default      
     * @method $this vertical(Boolean $bool)       ,       
     * @method $this button()       
     * @method $this required($message = null, $trigger = 'change')     

     
    評価コンポーネント
  • Form::rate
  •  * @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選択ボックスコンポーネント
  • Form::select選択ボックス
  • Form::selectMultiple select選択ボックス、複数選択、valueはarrayタイプ
  • Form::selectOne 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')     

     
    スライダアセンブリ
  • Form::sliderスライダアセンブリ
  • Form::sliderRangeスライダアセンブリ、区間選択、
  •  * @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    

     
    スイッチアセンブリ
  • Form::switches
  •  * @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)            

     
    時間選択コンポーネント
  • Form::timePicker時間選択コンポーネント
  • Form::time時間選択
  • Form::timeRange時間区間選択、valueはarrayタイプ
  •  * @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。

     
    コンポーネントのアップロード
  • Form::uploadアップロードコンポーネント
  • Form::uploadImagesマルチグラフアップロードコンポーネント、valueはarrayタイプ
  • Form::uploadFilesマルチファイルアップロードコンポーネント、valueはarrayタイプ
  • Form::uploadImageOne単図アップロードコンポーネント
  • Form::uploadFileOneシングルファイルアップロードコンポーネント
  •  * @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')     

     
    ツリーコンポーネント
  • Form::treeツリー型コンポーネント
  • Form::treeSelected選択タイプ、valueがarrayタイプ、type=selectedmultiple=false、値がStringまたはNumberタイプ
  • Form::treeChecked選択タイプ、valueはarrayタイプ
  •  * @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
  • Form::treeDataツリー型コンポーネントdata
  •  * @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)     

     
    すべてのコンポーネントが効果を生成
    リファレンス
  • uiフレームワーク:iview 2.x
  • jsフォームジェネレータ:form-create
  • 転載先:https://www.cnblogs.com/xaboy/p/9226600.html