PHPackages                             laravolt/semantic-form - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. laravolt/semantic-form

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

laravolt/semantic-form
======================

Semantic UI form helpers

v4.0.2(6y ago)5213.0k9[1 issues](https://github.com/laravolt/semantic-form/issues)4MITPHPPHP &gt;=7.3CI failing

Since Nov 9Pushed 4y ago5 watchersCompare

[ Source](https://github.com/laravolt/semantic-form)[ Packagist](https://packagist.org/packages/laravolt/semantic-form)[ Docs](https://github.com/laravolt/semantic-form)[ RSS](/packages/laravolt-semantic-form/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (10)Dependencies (8)Versions (79)Used By (4)

Semantic Form
=============

[](#semantic-form)

[![SensioLabsInsight](https://camo.githubusercontent.com/696d8582f2c516bab9b4b59c6df90f4356c3b6b941cf3ab02af145acc96175eb/68747470733a2f2f696d672e736869656c64732e696f2f73656e73696f6c6162732f692f37333738393938612d346437342d343361612d383431612d6438356237343537393733342e737667)](https://insight.sensiolabs.com/projects/7378998a-4d74-43aa-841a-d85b74579734)[![Travis](https://camo.githubusercontent.com/8e449e69a54becd953b6e77b142e22f9d6cd03e89caa8d28ec8bb56fb7c5a2d8/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6c617261766f6c742f73656d616e7469632d666f726d2e737667)](https://travis-ci.org/laravolt/semantic-form)[![Coverage Status](https://camo.githubusercontent.com/6ce8205175f60c428a0cc39ac7de8d7aa78c5d635b0acfa33bb405b30c9b57b0/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6c617261766f6c742f73656d616e7469632d666f726d2f62616467652e737667)](https://coveralls.io/github/laravolt/semantic-form?branch=master)

[Semantic UI](http://semantic-ui.com/) form builder, for Laravel.

Installation
------------

[](#installation)

```
$ composer require laravolt/semantic-form
```

API
---

[](#api)

**Note: You can use either facade `Form::method()` or helper `form()->method()`.**

### Opening Form

[](#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)

[](#opening-form-short-syntax-since-110)

```
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)

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

[](#text)

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

### Number

[](#number)

```
Form::number($name, $integerValue)->label('Total');
```

### Rupiah

[](#rupiah)

```
Form::rupiah($name, $defaultValue = null)->label('Price');
```

### Date

[](#date)

```
Form::date($name, $value)->label('Birthday');
```

### Time

[](#time)

```
Form::time($name, $value)->label('Start Time');
```

### Password

[](#password)

```
Form::password($name)->label('Password');
```

### Email

[](#email)

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

### Textarea

[](#textarea)

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

### Select Box (Dropdown)

[](#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 &amp; Select Date Time

[](#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

[](#select-range)

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

### Select Month

[](#select-month)

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

### Radio

[](#radio)

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

### Radio Group

[](#radio-group)

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

### Checkbox

[](#checkbox)

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

### Checkbox Group

[](#checkbox-group)

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

### File

[](#file)

```
Form::file($name);
```

### Input Wrapper

[](#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:

### Datepicker

[](#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

[](#timepicker)

```
Form::timepicker($name, $value);
```

### Hidden

[](#hidden)

```
Form::hidden($name, $value);
```

### Button

[](#button)

```
Form::button($value);
```

### Submit

[](#submit)

```
Form::submit($value);
```

### Model Binding

[](#model-binding)

#### Version 1

[](#version-1)

```
{!! Form::bind($model) !!}
```

#### Version 2

[](#version-2)

```
// as parameter for method open()
{!! Form::open($route, $model) !!}

// or chaining it
{!! Form::bind($model)->get($route) !!}
```

#### Warning

[](#warning)

```
// This is OK in version 1, but will produce error in version 2
{!! Form::bind($model) !!}
```

### Macro

[](#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),
        ""
    );
});
```

And then call it like any other method:

```
Form::trix('contentId', 'content', 'some content');
```

### Action

[](#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

[](#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)

[](#override-hint-class-globally-since-1102)

```
// Put this on every request, e.g. in AppServiceProvider
Laravolt\SemanticForm\Elements\Hint::$defaultClass = 'custom-class';
```

#### Example

[](#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

[](#middleware)

- \\Laravolt\\SemanticForm\\Middleware\\SelectDateMiddleware
- \\Laravolt\\SemanticForm\\Middleware\\SelectDateTimeMiddleware

Credits
-------

[](#credits)

SemanticForm inspired by [AdamWathan\\Form](https://github.com/adamwathan/form).

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community23

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 97.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~32 days

Recently: every ~205 days

Total

76

Last Release

1482d ago

Major Versions

0.x-dev → 1.0.02016-01-06

1.x-dev → 2.0.02019-02-07

2.13.3 → v4.0.12020-01-24

PHP version history (5 changes)0.1PHP &gt;=5.5.0

1.11.0PHP &gt;=5.6

2.0.0PHP &gt;=7.2

2.0.1PHP &gt;=7.1.3

v4.0.1PHP &gt;=7.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/db6f5ab11fb203026beb0e298930cc5a07080022e7cbb4c597b97321585df61b?d=identicon)[uyab](/maintainers/uyab)

---

Top Contributors

[![uyab](https://avatars.githubusercontent.com/u/149716?v=4)](https://github.com/uyab "uyab (276 commits)")[![anandiamy](https://avatars.githubusercontent.com/u/8675936?v=4)](https://github.com/anandiamy "anandiamy (4 commits)")[![mohamedsabil83](https://avatars.githubusercontent.com/u/10126040?v=4)](https://github.com/mohamedsabil83 "mohamedsabil83 (2 commits)")[![yandifitriyanto](https://avatars.githubusercontent.com/u/16094167?v=4)](https://github.com/yandifitriyanto "yandifitriyanto (1 commits)")

---

Tags

form-builderlaravel-packagesemantic-uilaravelformsemantic uilaravolt

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/laravolt-semantic-form/health.svg)

```
[![Health](https://phpackages.com/badges/laravolt-semantic-form/health.svg)](https://phpackages.com/packages/laravolt-semantic-form)
```

###  Alternatives

[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.1k91.3M279](/packages/laravel-horizon)[spatie/laravel-responsecache

Speed up a Laravel application by caching the entire response

2.8k8.7M64](/packages/spatie-laravel-responsecache)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[erlandmuchasaj/laravel-gzip

Gzip your responses.

40140.4k2](/packages/erlandmuchasaj-laravel-gzip)[sebastienheyd/boilerplate

Laravel Boilerplate based on AdminLTE 3 with blade components, user management, roles, permissions, logs viewer, ...

29419.5k3](/packages/sebastienheyd-boilerplate)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
