Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/markhilton/formfields

Laravel 5 package to render bootstrap HTML form fields sourced from Blade templates
https://github.com/markhilton/formfields

Last synced: 24 days ago
JSON representation

Laravel 5 package to render bootstrap HTML form fields sourced from Blade templates

Awesome Lists containing this project

README

        

# FormFields

FormFields is a collection of editable Laravel Blade views to render bootstrap responsive HTML content
for individual form fields. The form configuration is fetched from ORM model.

It also contains a class to queue linked and inline supporting javascripts.

## Main features

- read form fields configurtion directly from ORM models
- render individual HTML content for form fields
- support for required javascripts included in form fields template
- support for Laravel Blade template engine

## Setup

Add to your **config/app.php**

```php
'providers' => [
...
MarkHilton\FormFields\FormFieldsServiceProvider::class,
],

'aliases' => [
...
'jsQueue' => MarkHilton\FormFields\jsQueue::class,
'FormBuilder' => MarkHilton\FormFields\FormBuilder::class,
],
```

inside app root folder copy config file:

```bash
cp vendors/markhilton/formfields/config/formfields.php configs/formfields.php
```

### Model

```php
class Your_Model_Name extends Model
{
public static $errors = [];

// ... //

// HTML form builder definitions
public static $form = [
'name' => [
'type' => 'input',
'label' => 'Label name',
'position' => 'top',
],

'status' => [
'type' => 'select',
'label' => 'Status',
'position' => 'side',
'choice' => [
'active' => 'Active',
'pending' => 'Pending',
'suspended'=> 'Suspended',
],
'default' => 'active',
],

// ... //
```

### Controller

```php
namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\Your_Model_Name;
use Illuminate\Http\Request;

class SiteController extends Controller {

public function create(Request $request)
{
$form = \FormBuilder::build(Your_Model_Name::$form, $request->old() ? $request->old() : []),

return view('layout', $form);

// ... //
```

### View
```html


{{ $status }}

{{ $name }}


```

### HTML output

```html




Active
Pending
Suspended


Name





```

## Usage

Queue for linked and inline javascripts inside view template

### Controller
- **jsQueue::push('[javascript code]');** to push javascripts code to the queue
- **jsQueue::link('[javascript file]');** to add linked javascripts files

### View

add **{{ jsQueue::render() }}** call
in template header or footer in order to render queued javascripts

### How to steps
1. Define $form property in ORM model
2. Assign HTML form fields output from \FormBuilder::build(ORM_MODEL::$form);
3. Render form field in the template with {{ $field_name }}