How to create forms in Laravel with laravel-form-builder

Form builder for Laravel 5 inspired by Symfony's form builder. With help of Laravels FormBuilder class creates forms that can be easy modified and reused. By default it supports Bootstrap 3.

Laravel Form Builder is a package by Kristijan Husak that incorporates an API similar to Symfony’s form builder for Laravel 5 applications.


composer require kris/laravel-form-builder


Then add Service provider to config/app.php

'providers' => [
        // ...


And Facade (also in config/app.php)

'aliases' => [
        // ...
        'FormBuilder' => Kris\LaravelFormBuilder\Facades\FormBuilder::class



Creating form classes is easy. With a simple artisan command:

php artisan make:form Forms/SongForm --fields="name:text, lyrics:textarea, publish:checkbox"


Form is created in path app/Forms/SongForm.php with content:

<?php namespace App\Forms;

use Kris\LaravelFormBuilder\Form;

class SongForm extends Form
    public function buildForm()
            ->add('name', 'text')
            ->add('lyrics', 'textarea')
            ->add('publish', 'checkbox');


After that instantiate the class in the controller and pass it to view:

<?php namespace App/Http/Controllers;

use Illuminate\Routing\Controller as BaseController;
use Kris\LaravelFormBuilder\FormBuilder;

class SongsController extends BaseController {

    public function create(FormBuilder $formBuilder)
        $form = $formBuilder->create('App\Forms\SongForm', [
            'method' => 'POST',
            'url' => route('')

        return view('song.create', compact('form'));


Print the form in view with form() helper function:

<!-- resources/views/song/create.blade.php -->


    {!! form($form) !!}


Above code will generate this html:

<form method="POST" action="">
    <input name="_token" type="hidden" value="FaHZmwcnaOeaJzVdyp4Ml8B6l1N1DLUDsZmsjRFL">
    <div class="form-group">
        <label for="name" class="control-label">Name</label>
        <input type="text" class="form-control" id="name">
    <div class="form-group">
        <label for="lyrics" class="control-label">Lyrics</label>
        <textarea name="lyrics" class="form-control"></textarea>
    <div class="form-group">
        <label for="publish" class="control-label">Publish</label>
        <input type="checkbox" name="publish" id="publish">


You can check the official website for detailed instructions.See you next time.

Tags :