laravolt/semantic-form
Composer 安装命令:
composer require laravolt/semantic-form
包简介
Semantic UI form helpers
README 文档
README
Semantic UI form builder, for Laravel.
Installation
$ composer require laravolt/semantic-form
API
Note: You can use either facade Form::method() or helper form()->method().
Opening Form
Form::open('search'); // action="search" Form::open()->get(); Form::open()->post(); Form::open()->put(); Form::open()->patch(); Form::open()->delete(); Form::open(); // default to method="GET" Form::open()->action('search'); Form::open()->url('search'); // alias for action() Form::open()->route('route.name'); Form::open()->post()->action(route('comment.store'));
Opening Form (Short Syntax, Since 1.10)
Form::open('search'); // action="search" method=POST Form::get('search'); // action="search" method=GET Form::post('search'); // action="search" method=POST Form::put('search'); // action="search" method=POST _method=PUT Form::patch('search'); // action="search" method=POST _method=PATCH Form::delete('search'); // action="search" method=POST _method=DELETE
CSRF Token
CSRF token will automatically generated if current form method is POST. To prevent token generation,
you can call withoutToken() when opening a form.
Form::post('search')->withoutToken();
Text
Form::text($name, $value)->label('Username');
Number
Form::number($name, $integerValue)->label('Total');
Rupiah
Form::rupiah($name, $defaultValue = null)->label('Price');
Date
Form::date($name, $value)->label('Birthday');
Time
Form::time($name, $value)->label('Start Time');
Password
Form::password($name)->label('Password');
Form::email($name, $value)->label('Email Address');
Textarea
Form::textarea($name, $value)->label('Note');
Select Box (Dropdown)
Form::select($name, $options)->label('Choose Country'); Form::select($name, $options, $selected)->label('Choose Country'); Form::select($name, $options)->placeholder('--Select--'); Form::select($name, $options)->appendOption($key, $label); Form::select($name, $options)->prependOption($key, $label);
Select Date & Select Date Time
Form::selectDate('myDate', $startYear, $endYear)->label('Birth Date'); Form::selectDateTime('myDate', $startYear, $endYear, $intervalInMinute)->label('Schedule');
By default, selectDate and selectDateTime will post request as _myDate with ['date'=>4, 'month'=>5, 'year'=>2016] for example.
To get 2016-5-4 format, you need to register middleware and use it in the routes.
protected $routeMiddleware = [ 'selectdate' => \Laravolt\SemanticForm\Middleware\SelectDateMiddleware::class, 'selectdatetime' => \Laravolt\SemanticForm\Middleware\SelectDateTimeMiddleware::class ];
Route::post('myForm', ['middleware' => ['web', 'selectdate:myDate'], function (\Illuminate\Http\Request $request) { dd($request->input('myDate')); // Will output 2016-5-4 }]);
Select Range
Form::selectRange($name, $begin, $end)->label('Number of child');
Select Month
Form::selectMonth($name, $format = '%B')->label('Month');
Radio
$checked = true; Form::radio($name, $value, $checked)->label('Item Label');
Radio Group
$values = ['apple' => 'Apple', 'banana' => 'Banana']; $checkedValue = 'banana'; Form::radioGroup($name, $values, $checkedValue)->label('Select Fruit');
Checkbox
Form::checkbox($name, $value, $checked)->label('Remember Me');
Checkbox Group
$values = ['apple' => 'Apple', 'banana' => 'Banana']; $checkedValue = 'banana'; Form::checkboxGroup($name, $values, $checkedValue)->label('Select Fruit');
File
Form::file($name);
Input Wrapper
Form::input($name, $defaultvalue); Form::input($name, $defaultvalue)->appendIcon('search'); Form::input($name, $defaultvalue)->prependIcon('users'); Form::input($name, $defaultvalue)->appendLabel($label); Form::input($name, $defaultvalue)->prependLabel($label); Form::input($name, $defaultvalue)->type("password");
Reference: http://semantic-ui.com/elements/input.html
Datepicker
Form::datepicker($name, $value, $format); // Valid $format are: // DD -> two digit date // MM -> two digit month number // MMMM -> month name (localized) // YY -> two digit year // YYYY -> full year // To convert localized format to standard (SQL) datetime format, you can use Jenssegers\Date\Date library (already included): // Jenssegers\Date\Date::createFromFormat('d F Y', '12 februari 2000')->startOfDay()->toDateTimeString(); // Jenssegers\Date\Date::createFromFormat('d F Y', '12 februari 2000')->startOfDay()->toDateString();
Timepicker
Form::timepicker($name, $value);
Hidden
Form::hidden($name, $value);
Button
Form::button($value);
Submit
Form::submit($value);
Model Binding
Version 1
{!! Form::bind($model) !!}
Version 2
// as parameter for method open() {!! Form::open($route, $model) !!} // or chaining it {!! Form::bind($model)->get($route) !!}
Warning
// This is OK in version 1, but will produce error in version 2 {!! Form::bind($model) !!}
Macro
Macro definition, put it anywhere within your application, e.g. AppServiceProvider:
Form::macro('trix', function ($id, $name, $value = null) { return sprintf( "%s %s", Form::hidden($name, $defaultValue)->id($id), "<trix-editor input='{$id}'></trix-editor>" ); });
And then call it like any other method:
Form::trix('contentId', 'content', '<b>some content</b>');
Action
// Method 1 Form::action(Form::submit('Save'), Form::button('cancel')); // Method 2 // Assumed you already define some macros: Form::macro('submit', function(){ return form()->submit('Submit'); }); Form::macro('cancel', function(){ return form()->button('Cancel'); }); // Then you can just call macro name as string Form::action('submit', 'cancel'); // Method 3 // Even further, you can define macro thats just wrap several buttons: SemanticForm::macro('default', function(){ return new \Laravolt\SemanticForm\Elements\Wrapper(form()->submit('Submit'), form()->submit('Submit')); }); // And then make the call simplier: Form::action('default');
General Function
For every form element, you can call and chaining following methods:
- id($string)
- addClass($string)
- removeClass($string)
- attribute($name, $value)
- data($name, $value)
- hint($text) (Since 1.10.0)
- hint($text, $class = "hint") (Since 1.10.2)
Override Hint class globally (Since 1.10.2)
// Put this on every request, e.g. in AppServiceProvider Laravolt\SemanticForm\Elements\Hint::$defaultClass = 'custom-class';
Example
Form::text($name, $value)->label('Username')->id('username')->addClass('foo'); Form::text($name, $value)->label('Username')->data('url', 'http://id-laravel.com'); Form::password($name, $value)->label('Password')->hint('Minimum 6 characters'); Form::password($name, $value)->label('Password')->hint('Minimum 6 characters', 'my-custom-css-class');
Middleware
- \Laravolt\SemanticForm\Middleware\SelectDateMiddleware
- \Laravolt\SemanticForm\Middleware\SelectDateTimeMiddleware
Credits
SemanticForm inspired by AdamWathan\Form.
laravolt/semantic-form 适用场景与选型建议
laravolt/semantic-form 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13k 次下载、GitHub Stars 达 52, 最近一次更新时间为 2015 年 11 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「form」 「laravel」 「semantic ui」 「laravolt」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 laravolt/semantic-form 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 laravolt/semantic-form 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 laravolt/semantic-form 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
An extension to Semantic MediaWiki allowing to build breadcrumb links from an attributive property filter
Minimal CSS Framework for semantic HTML.
Adds the EDTF data type to Wikibase
Converts SemVer version (like Composer packages) into integer version with operators. Helps managing versions: store, compare, sort and retrive by conditions.
Diese Contao 4 Erweiterung stellt Google reCAPTCHA V2 in Form eines neuen Formularfeldes im Formulargenerator bereit. This extension provides Google reCAPTCHA V2 in the form of a new form field in the form generator of Contao Open Source CMS.
A Laravel Filament Forms slug field.
统计信息
- 总下载量: 13k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 52
- 点击次数: 15
- 依赖项目数: 4
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-11-09