bnbwebexpertise / laravel-bootstrap-form
Laravel 5 form wrappers for Bootstrap 3. Based on Dwight Watson version and tuned for personal requirements.
Requires
- php: >=5.4.0
- illuminate/config: >=5.0
- illuminate/session: >=5.0
- illuminate/support: >=5.0
- laravelcollective/html: >=5.0
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.7
- dev-master / 2.x-dev
- 2.0.15
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.3.0
- 1.2.12
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.x-dev
- 0.8.6
- 0.8.5
- 0.8.4
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8.0
- dev-configurable-class
- dev-L5.1
This package is auto-updated.
Last update: 2024-11-28 19:50:42 UTC
README
This is a package for simply creating Bootstrap 4 styled form groups in Laravel 5. It extends the normal form builder to provide you with horizontal form groups completed with labels, error messages and appropriate class usage.
For Bootstrap 3, use version 1.x : composer require bnbwebexpertise/laravel-bootstrap-form:^1
Introduction
Simply use the BootstrapForm
facade in the place of the Form
facade when you want to generate a Bootstrap 4 form group.
BootForm::text('username');
And you'll get back the following:
<div class="form-group"> <label for="username" class="control-label col-md-2">Username</label> <div class="col-md-10"> <input type="text" name="username" class="form-control"> </div> </div>
Of course, if there are errors for that field it will even populate them.
<div class="form-group has-error"> <label for="username" class="control-label col-md-2">Username</label> <div class="col-md-10"> <input type="text" name="username" class="form-control"> <span class="help-block">The username field is required.</span> </div> </div>
Installation
First, require the package using Composer.
composer require bnbwebexpertise/laravel-bootstrap-form
For Laravel 5.5 and newer the package is auto-loaded. For older versions, you must configure the providers as described below.
Add these service providers to your config/app.php
file (don't add the HtmlServiceProvider
if you already have it).
Collective\Html\HtmlServiceProvider::class, Bnb\BootstrapForm\BootstrapFormServiceProvider::class,
And finally add these to the aliases array (note: Form and Html must be listed before BootstrapForm):
'Form' => Collective\Html\FormFacade::class, 'HTML' => Collective\Html\HtmlFacade::class, 'BootForm' => Bnb\BootstrapForm\Facades\BootstrapForm::class,
Feel free to use a different alias for BootstrapForm if you'd prefer something shorter.
Configuration
There are a number of configuration options available for BootstrapForm. Run the following Artisan command to publish the configuration option to your config
directory:
php artisan vendor:publish
Horizontal form sizes
When using a horizontal form you can specify here the default sizes of the left and right columns. Note you can specify as many classes as you like for each column for improved mobile responsiveness, for example:
col-md-3 col-sm-6 col-xs-12
Display errors
By default this package will only display the first validation error for each field. If you'd instead like to list out all the validation errors for a field, simply set this configuration option to true.
Required fields
By default this package will append an asterisk *
to the label of required fields. It will also add the required
CSS class to the form group. You may override these values in the configuration file or by passing the values to the open
method :
BootForm::open([ 'label_required_mark' => '(required)', 'group_required_class' => 'field-required' ])
Default values
You can force default values by passing the values to the open
method :
BootForm::open([ 'values' => ['foo' => 'bar'] ])
These values take precedence over the model values, but not the provided or the old/request ones.
Usage
When used in a blade template enclose the helper methods inside an unescaped block: {!! !!}
Warning : make sure to escape any character which comes from user input (from any possible source) while using raw ouput tags especially when using explicit HTML version of values.
Opening a form
BootstrapForm has improved the process of opening forms, both in terms of providing Bootstrap classes as well as managing models for model-based forms.
// Passing an existing, persisted model will trigger a model // binded form. $user = User::whereEmail('example@example.com')->first(); // Named routes BootForm::open(['model' => $user, 'store' => 'users.store', 'update' => 'users.update']); // Controller actions BootForm::open(['model' => $user, 'store' => 'UsersController@store', 'update' => 'UsersController@update']);
If a model is passed to the open method, it will be configured to use the update
route with the PUT
method. Otherwise it will point to the store
method as a POST
request. This way you can use the same opening tag for a form that handles creating and saving.
// Passing a model that hasn't been saved or a null value as the // model value will trigger a `store` form. $user = new User; BootForm::open()
Form variations
There are a few helpers for opening the different kinds of Bootstrap forms. By default, open()
will use the the form style that you have set in the configuration file. These helpers take the same input as the open()
method.
// Open a vertical Bootstrap form. BootForm::vertical(); // Open an inline Bootstrap form. BootForm::inline(); // Open a horizontal Bootstrap form. BootForm::horizontal();
If you want to change the columns for a form for a deviation from the settings in your configuration file, you can also set them through the $options
array.
BootForm::open(['left_column_class' => 'col-md-2', 'left_column_offset_clsas' => 'col-md-offset-2', 'right_column_class' => 'col-md-10']);
Text inputs
Here are the various methods for text inputs. Note that the method signatures are relatively close to those provided by the Laravel form builder but take a parameter for the form label.
// The label will be inferred as 'Username'. BootForm::text('username'); // The field name by default is 'email'. BootForm::email(); BootForm::textarea('profile'); // The field name by default is 'password'. BootForm::password();
Checkbox and radio button inputs
Checkboxes and radio buttons are a little bit different and generate different markup.
View the method signature for configuration options.
// A checked checkbox. BootForm::checkbox('interests[]', 'Laravel', 'laravel', true);
Same goes for radio inputs.
BootForm::radio('gender', 'Male', 'male');
Multiple checkboxes and radio buttons
By simply passing an array of value/label pairs you can generate a group of checkboxes or radio buttons easily.
$label = 'this is just a label'; $interests = [ 'laravel' => 'Laravel', 'rails' => 'Rails', 'ie6' => 'Internet Explorer 6' ]; // Checkbox inputs with Laravel and Rails selected. BootForm::checkboxes('interests[]', $label, $interests, ['laravel', 'rails']); $genders = [ 'male' => 'Male', 'female' => 'Female' ]; // Gender inputs inline, 'Gender' label inferred. BootForm::radios('gender', null, $genders, null, true); // Gender inputs with female selected. BootForm::radios('gender', 'Gender', $genders, 'female');
Submit button
// Pretty simple. BootForm::submit('Login');
Custom button
// Pretty simple. BootForm::button('Activate', [ 'data-trigger' => 'foo' ]);
Closing the form
// Pretty simple. BootForm::close();
Labels
Hide Labels
You may hide an element's label by setting the the value to false
.
// An input with no label. BootForm::text('username', false);
Labels with HTML
To include HTML code inside a label:
// A label with HTML code using array notation BootForm::text('username', ['html' => 'Username <span class="required">*</span>']); // A label with HTML code using HtmlString object BootForm::text('username', new Illuminate\Support\HtmlString('Username <span class="required">*</span>'));
Help Text
You may pass a help_text
option to any field to have Bootstrap Help Text appended to the rendered form group.
Form group comment
// The label will be inferred as 'Username'. BootForm::text('username', null, null, [ 'comment' => 'Please use only letters and numbers' ]);
displays a comment line with bootstrap help-block
class :
<div class="form-group"> <label for="username" class="control-label col-md-2">Username</label> <div class="col-md-10"> <input type="text" name="username" class="form-control"> </div> <p class="help-block">Please use only letters and numbers</p> </div>
Form group class
// The label will be inferred as 'Username'. BootForm::text('username', null, null, [ 'form-group-class' => 'my-custom-class' ]);
adds a class to the form-group
element :
<div class="form-group my-custom-class"> <label for="username" class="control-label col-md-2">Username</label> <div class="col-md-10"> <input type="text" name="username" class="form-control"> </div> </div>
Static Fields
Display text as static field (replicate input layout) with optionnal default value (supports HTML)
// A static field read from the model BootForm::staticField('username', 'Username']); // A static field with explicit value BootForm::staticField('username', 'Username', $model->login]); // A static field with explicit value in HTML code using array notation BootForm::staticField('username', 'Username', ['html' => sprintf('Set to <strong>%s</strong>', e($model->username)]);