Laravel Castable package is a type converter, input filter or sanitizer. It is possible to do all of these operations. Supported POST
, RAW DATA
, GET
requests methods. We started by inspiring the Laravel Eloquent data cast.
PHP 5.6, 7.0+ Laravel 5.3 (LTS) or Laravel 5.4 (Current)
Firstly, we install package:
$ composer require atayahmet/laravel-castable
and then we need add the service provider to the app.php
Castable\CastableServiceProvider::class
OK, we done.
Let's see how to use the laravel-castable.
Types |
---|
string |
integer |
boolean |
float |
double |
real |
unset |
array |
object (stdClass) |
collection |
We created new artisan command that inspired make:request
from laravel built in command.
$ php artisan make:cast ContactRequest
New form of the form request class:
<?php
namespace App\Http\Requests;
use Castable\Castable;
class ContactRequest extends Castable
{
protected $casts = [
'json' => [
//
],
'post' => [
'name' => 'string',
'age' => 'integer',
'student' => 'boolean',
'interests' => 'collection'
],
'query' => [
'save' => 'boolean'
]
];
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
We added four inputs to casts property, status attibute added to query string parameters and age, student and interests attributes added to post parameters.
Post:
Name | Value | Type | Cast Type |
---|---|---|---|
name | Ali | string | string |
age | 19 | string | integer |
student | true | string | boolean |
interests | books, computers | array | collection |
Query String:
Name | Value | Type | Cast Type |
---|---|---|---|
save | true | string | boolean |
To get the above result for:
<?php
ContactController extends Controller {
public index(ContactRequest $contactRequest)
{
$contactRequest->cast()->input();
}
}
Get a input:
$contactRequest->cast()->input('interests'); // collection
$contactRequest->cast()->input('student') // boolean (true)
$contactRequest->cast()->input('save') // boolean (true)
if request is post raw data:
$contactRequest->cast()->json();
$contactRequest->cast()->json('age');
Get original inputs:
$contactRequest->input();
Get original an input:
$contactRequest->input('student'); // string (true)
Original raw data:
$contactRequest->json();
You can add presenter to the all post, query and json inputs. This feature gives you a chance to filter inputs.
Add presenter for post parameters:
public function PostNameAttribute($value, $original)
{
return ucfirst($value);
}
Add presenter for query string parameters:
public function QuerySaveAttribute($value, $original)
{
return $value === true ? 1 : 0;
}
Add presenter for json raw data parameters:
public function JsonSaveAttribute($value, $original)
{
return ucfirst($name);
}
This package is open-source software licensed under the MIT license.