Fast set the form fields of the Laravel form builder.
ycs77/laravel-form-field-type is a Laravel package for fast set the form fields of the laravel form builder..
It currently has 0 GitHub stars and 152 downloads on Packagist (latest version v1.3.2).
Install it with composer require ycs77/laravel-form-field-type.
Discover more Laravel packages by ycs77
or browse all Laravel packages to compare alternatives.
Last updated
Fast set the form fields of the Laravel form builder.
Laravel form builder must be installed.
Via Composer
composer require ycs77/laravel-form-field-type
Publish config
php artisan vendor:publish --tag=laravel-form-field-type-config
Suggestions can be matched with Laravel form builder BS4.
First, create one form fields class:
php artisan make:formfields UserFormFields
The commonly used fields can be defined in config/field.php and the FieldType will be loaded automatically.
In this case, the 'phone' fields have been defined in config/field.php, so they can be used directly.
app/FormFields/UserFormFields
<?php
namespace App\FormFields;
use Ycs77\LaravelFormFieldType\FormFields;
class UserFormFields extends FormFields
{
/**
* Return form fields array.
*
* @return array
*/
public function fields()
{
return [
'name' => [
'rules' => 'required|50',
],
'phone',
'submit',
];
}
}
Second, add FormFields, FormFieldsTrait to controller:
app/Http/Controllers/MyController
<?php
namespace App\Http\Controllers;
use App\FormFields\UserFormFields;
use Illuminate\Http\Request;
use Ycs77\LaravelFormFieldType\Traits\FormFieldsTrait;
class MyController extends Controller
{
use FormFieldsTrait;
protected $formFields;
public function __construct(UserFormFields $formFields)
{
$this->formFields = $formFields;
}
public function index()
{
$form = $this->renderForm([
'url' => '/url',
'method' => 'POST',
]);
// Response view ...
}
public function store(Request $request)
{
$data = $this->validateFormData($request);
// Save model data ...
}
}
Add property validateMessage to controller.
protected $validateMessage = [
'dimensions' => 'The maximum length and width of the image is 4000x4000px.',
];
Add property failedMessage to controller.
protected $failedMessage = [
'images' => 'Can only upload up to 5 images.',
];
Add property langPath to controller.
protected $langPath = 'validation.attributes';
If you enter a field defined by config/field.php, the field will be returned.
Return the complete type of the specified type of data:
Get field:
$array = FieldType::type('age', [
'type' => 'number',
]);
// [
// 'id' => 'age',
// 'type' => 'number',
// ]
Or use same:
$array = FieldType::type('age', 'number');
// [
// 'id' => 'age',
// 'type' => 'number',
// ]
Get exist field type:
$array = FieldType::type('nickname', [
'type' => 'name',
'rules' => 'required',
]);
// [
// 'id' => 'nickname',
// 'type' => 'text',
// 'rules' => 'required',
// ]
Override field type:
$array = FieldType::type('name', [
'rules' => 'required',
]);
// [
// 'id' => 'name',
// 'type' => 'text',
// 'rules' => 'required',
// ]
If use front_rules attribute, only front use this rules:
$array = FieldType::type('name', [
'type' => 'name',
'front_rules' => 'required',
]);
// [
// 'id' => 'name',
// 'type' => 'text',
// 'rules' => 'required',
// ]
The fields method is to traverse the array to execute the field method.
Parsing field data:
$fields = [
'name',
'age' => [
'type' => 'number',
],
];
$array = FieldType::fields($fields);
// [
// [
// 'id' => 'name',
// 'type' => 'text',
// 'rules' => 'required|max:20',
// ],
// [
// 'id' => 'age',
// 'type' => 'number',
// ],
// ]
Return the ID of each field:
$fields = [
'name',
'age' => [
'type' => 'number',
],
];
$array = FieldType::list($fields);
// ['name', 'age']
Transform to the right type:
$fields = [
'name',
'meeting_time' => [
'type' => 'datetime-local',
'rules' => 'required',
],
];
$data = [
'name' => 'Bob',
'meeting_time' => '2018-01-01T00:00',
];
$array = FieldType::casts($fields, $data);
// [
// 'name' => 'Bob',
// 'meeting_time' => '2018-01-01 00:00:00',
// ]
Compile the form:
$form = $this->plain();
$fields = [
'name',
'meeting_time' => [
'type' => 'datetime-local',
'rules' => 'required',
],
];
$form = FieldType::form($form, $fields);
// => \Kris\LaravelFormBuilder\Form
// All fields have been added to the form.
If use back_rules attribute, only back use this rules.
Parsing validation rules:
$fields = [
'name',
'phone' => [
'rules' => 'required',
],
'age' => [
'back_rules' => 'required',
],
];
$array = FieldType::rules($fields);
// [
// 'name' => 'required|max:20',
// 'phone' => 'required',
// 'age' => 'required',
// ]