Skip to content

CristalTeam/semantic-form

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Semantic Form

SensioLabsInsight Travis Coverage Status

Semantic UI form builder, for Laravel.

Installation

Via Composer

$ composer require laravolt/semantic-form

Service Provider

Laravolt\SemanticForm\ServiceProvider::class,

Facade (Alias)

'SemanticForm'    => Laravolt\SemanticForm\Facade::class,

API

Opening Form

SemanticForm::open()->get();
SemanticForm::open()->post();
SemanticForm::open()->put();
SemanticForm::open()->patch();
SemanticForm::open()->delete();
SemanticForm::open(); // default to method="GET"
SemanticForm::open()->action('search');
SemanticForm::open()->post()->action(route('comment.store'));

Input Text

SemanticForm::text($name, $value)->label('Username');

Password

SemanticForm::text($name, $value)->label('Password');

Email

SemanticForm::email($name, $value)->label('Email Address');

Textarea

SemanticForm::textarea($name, $value)->label('Note');

Select Box (Dropdown)

SemanticForm::select($name, $options)->label('Choose Country');
SemanticForm::select($name, $options, $selected)->label('Choose Country');
SemanticForm::select($name, $options)->placeholder('--Select--');
SemanticForm::select($name, $options)->appendOption($key, $label);
SemanticForm::select($name, $options)->prependOption($key, $label);

Select Date & Date Time

SemanticForm::selectDate('myDate', $startYear, $endYear)->label('Birth Date');
SemanticForm::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

SemanticForm::selectRange($name, $begin, $end)->label('Number of child');

Select Month

SemanticForm::selectMonth($name, $format = '%B')->label('Month');

Radio

$checked = true;
SemanticForm::radio($name, $value, $checked)->label('Item Label');

Radio Group

$values = ['apple' => 'Apple', 'banana' => 'Banana'];
$checkedValue = 'banana';
SemanticForm::radioGroup($name, $values, $checkedValue)->label('Select Fruit');

Checkbox

SemanticForm::checkbox($name, $value, $checked)->label('Remember Me');

Checkbox Group

$values = ['apple' => 'Apple', 'banana' => 'Banana'];
$checkedValue = 'banana';
SemanticForm::checkboxGroup($name, $values, $checkedValue)->label('Select Fruit');

File

SemanticForm::file($name);

Input Wrapper

SemanticForm::input($name, $defaultvalue);
SemanticForm::input($name, $defaultvalue)->appendIcon('search');
SemanticForm::input($name, $defaultvalue)->prependIcon('users');
SemanticForm::input($name, $defaultvalue)->appendLabel($label);
SemanticForm::input($name, $defaultvalue)->prependLabel($label);

Reference: http://semantic-ui.com/elements/input.html

Image (Not Yet Implemented)

SemanticForm::image($name);

Datepicker (experimental)

// somewhere in view
SemanticForm::datepicker($name, $value, $format);

// don't forget to put this somewhere on your view
@include('semantic-form::scripts.calendar')

// 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();

See Semantic-Org/Semantic-UI#3256 for further discussion. Remember, you must include calendar.js and calendar.css on your own.

Redactor (Not Yet Implemented)

SemanticForm::redactor($name, $value)->label('Post Body');

Hidden

SemanticForm::hidden($name, $value);

Button

SemanticForm::button($value);

Submit

SemanticForm::submit($value);

Model Binding

SemanticForm::bind($model);

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)

Example

SemanticForm::text($name, $value)->label('Username')->id('username')->addClass('foo');
SemanticForm::text($name, $value)->label('Username')->data('url', 'http://id-laravel.com');

Middleware

  • \Laravolt\SemanticForm\Middleware\SelectDateMiddleware
  • \Laravolt\SemanticForm\Middleware\SelectDateTimeMiddleware

Credits

SemanticForm built on top of awesome form builder by AdamWathan\Form.

About

Semantic UI form builder, for Laravel.

Resources

Stars

Watchers

Forks

Packages

No packages published