Form Builder

Laravel Drag & Drop Form Builder Package using JQuery Form Builder

Laravel Drag & Drop Form Builder Package using JQuery Form Builder 

View Github – https://github.com/jazmy/laravel-formbuilder

Laravel Form Builder Package

A Laravel package for creating a drag-and-drop form builder using the JQuery Form Builder.

Demo: http://demoform.jazmy.com/

Note: Features like email, registration and file uploads are disabled in the demo

Screenshot:

alt text

The forms fields are saved as json and stored in your database. A member of your site can create, edit and delete forms. Forms belong to the users that created them and each form has a unique link that can be shared publicly.

The json version of the form can be used to render the form for users to fill.

Example Json Form:

[{"type":"header","subtype":"h1","label":"Demo Form 01"},{"type":"paragraph","subtype":"p","label":"This demo form is a potluck sign-up sheet"},{"type":"text","label":"Name","className":"form-control","name":"name","subtype":"text"},{"type":"radio-group","label":"Food Category","name":"foodcategory","other":true,"values":[{"label":"Appetizer","value":"Appetizer"},{"label":"Beverage","value":"Beverage"},{"label":"Salad","value":"Salad"},{"label":"Main","value":"Main"},{"label":"Dessert","value":"Dessert"}]},{"type":"number","label":"How many will it serve","className":"form-control","name":"numberserved","min":"1","max":"50","step":"1"},{"type":"text","label":"Dish Name","className":"form-control","name":"dishname","subtype":"text"},{"type":"checkbox-group","label":"Dietary Restrictions","description":"Which of the following does your dish contain?","name":"dietaryrestrictions","values":[{"label":"Alcohol","value":"Alcohol"},{"label":"Carbs","value":"Carbs"},{"label":"Dairy","value":"Dairy"},{"label":"Egg","value":"Egg"},{"label":"Fish","value":"Fish"},{"label":"Gluten","value":"Gluten"}]},{"type":"textarea","label":"Comment","className":"form-control","name":"comment","subtype":"textarea"}]

Form permission options + Public - anyone can submit the form without needing to login + Private - only authenticated members of your site can access the form. Provide the option for users to edit their previous submissions.

Requirements

If you are looking for a managed web host, with easy laravel site creation, then I highly recommend Cloudways. Cloudways will setup a laravel site and mysql database in minutes.

Dependencies Included with Package

Installation Instructions

This custom package takes a couple steps to install but I will try to make it as simple as possible.

Step One:

Edit your composer.json file First, add the path to a private repository. Never done this before? Check out the documentation for adding custom repositories

"repositories": [
    {
        "type": "vcs",
        "url": "git@github.com:jazmy/laravelformbuilder.git"
    }
]

Second, at the top of your composer.json file add the custom package to the required section

"jazmy/jaz-form-builder": "dev-master"

Step Two:

Save and close your composer.json file then in your command line type the command to update composer. This will install the package for you.

composer update

Note: The package will automatically register itself using Laravel's package discovery feature for versions 5.6 and above. This means you do not need to update your config/app.php file.

Step Three:

We need to add the additional database tables so run the following command

php artisan migrate

Step Four:

Create the form package's configuration file. This will place a formbuilder.php file in your config folder. In the configuration file you can change the url path for the package's routes, layout template to use and script / style output sections.

Run the following command:

php artisan vendor:publish --tag formbuilder-config

Step Five:

Update your blade template file. In the default laravel install the template file is located here: /resources/views/layouts/app.php

You need to add tags for the new styles and scripts At the top of the blade file, just above the closing head tag:

@stack('styles')

At the bottom of the blade file, just above the closing the closing body tag:

@stack('scripts')

Note: If you ever need to change which files are called using these @stack values, you can update the config file.

Step Six:

Publish the custom blade view files by running

php artisan vendor:publish --tag formbuilder-views

Publish the public assets by running

php artisan vendor:publish --tag formbuilder-public

Or you can publish everything at once with

php artisan vendor:publish --provider="jazmy\FormBuilder\FormBuilderServiceProvider"

Step Seven:

In order to properly link to attachments, you need to run the storage:link command which makes the storage folder publicly accessibly

php artisan storage:link

Accessing The Application

Ta Da! You did it! Now to access the form application. http://your.domain.com/form-builder/forms

To view submissions: http://your.domain.com/form-builder/my-submissions

Using The Trait

You can access forms and submissions that belong to a user in your application. To use the trait add a use statement to your user model class.

use jazmy\FormBuilder\Traits\HasFormBuilderTraits;

class User extends Authenticatable
{
    use HasFormBuilderTraits;
}

You can now access the user's forms and submissions by running

$user = User::first();

// get the user's forms
$user->forms;

// get the user's submissions
$user->submissions;

// or use static methods on the jazmy\FormBuilder\Models\Form class
$user_forms = Form::getForUser($user); // returns a paginated resultset

// the jazmy\FormBuilder\Models\Submission class also has a static method for getting the submissions
// that belong to a user
$my_submissions = Submission::getForUser($user); // returns a paginated resultset

Using Events

The package dispatches a number of events when records are created or updated so that you can listen to these events and perform custom tasks in your application's logic