Package Data | |
---|---|
Maintainer Username: | atayahmet |
Maintainer Contact: | ahmet.atay@hotmail.com (Ahmet ATAY) |
Package Create Date: | 2017-02-24 |
Package Last Update: | 2017-03-02 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-14 15:08:47 |
Package Statistics | |
---|---|
Total Downloads: | 22 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 6 |
Total Watchers: | 3 |
Total Forks: | 0 |
Total Open Issues: | 0 |
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.