PHP code example of chargefield / laravel-savable

1. Go to this page and download the library: Download chargefield/laravel-savable library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

chargefield / laravel-savable example snippets


namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Chargefield\Savable\Traits\IsSavable;

class Post extends Model
{
    use IsSavable;
}

namespace App\Http\Controllers;

use App\Models\Post;
use Chargefield\Savable\Fields\SlugField;
use Chargefield\Savable\Fields\StringField;
use Illuminate\Http\Request;

class PostController
{
    public function store(Request $request)
    {
        $post = Post::make()->savable($request->all())->columns([
            StringField::make('title'),
            SlugField::make('slug')->fromField('title'),
            StringField::make('body'),
        ])->save();
    }
}

$post = Post::make()->savable([...])->columns([
    StringField::make('title'),
    SlugField::make('slug')->fromField('title'),
    StringField::make('body'),
])->save();

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Chargefield\Savable\Fields\Field;
use Chargefield\Savable\Traits\IsSavable;
use Chargefield\Savable\Fields\JsonField;
use Chargefield\Savable\Fields\SlugField;
use Chargefield\Savable\Fields\FileField;
use Chargefield\Savable\Fields\StringField;
use Chargefield\Savable\Fields\BooleanField;
use Chargefield\Savable\Fields\IntegerField;
use Chargefield\Savable\Fields\DatetimeField;

class Post extends Model
{
    use IsSavable;

    /**
     * @return Field[]
     */
    public function savableColumns(): array
    {
        return [
            StringField::make('title')->rules('

$post = Post::make()->savable(request()->all())->columns([...])->save();

$post = Post::make()->savable()->data(request()->all())->columns([...])->save();

$post = Post::make()->savable()->fromRequest()->columns([...])->save();

$post = Post::make()->savable()->fromRequest(request())->columns([...])->save();

$post = Post::make()->savable()->data([...])->columns([...])->validate()->save();

Post::make()->savable()->data([...])->columns([...])->hasErrors();
// return bool

Post::make()->savable()->data([...])->columns([...])->getErrors();
// return Illuminate\Support\MessageBag

StringField::make('title');

SlugField::make('slug')->fromField('title')->separateBy('-');

FileField::make('image')->disk('local')->path('images')->withOriginalName();

BooleanField::make('is_featured');

IntegerField::make('age')->strict();

JsonField::make('options')->pretty()->depth(512);

DatetimeField::make('published_at');

StringField::make('title', 'Default Title');

StringField::make('title')->value('Default Title');

StringField::make('title')->fieldName('name');

StringField::make('title')->nullable();

StringField::make('user_id')->rules('

StringField::make('user_id')->rules([
    '

StringField::make('title')->transform(function ($fieldName, $fieldValue, $fieldsData) {
    return Str::title($fieldValue);
});

namespace App\Fields;

use Chargefield\Savable\Fields\Field; 

class CustomField extends Field
{
    /**
     * @param array $data
     * @return mixed
     */
    public function handle(array $data = [])
    {
        if (empty($this->value) && $this->nullable) {
            return null;
        }
        
        // Logic goes here

        return $this->value;
    }
}

$field = CustomField::fake('title');
$field->value('Example Title');
$field->assertHandle('Example Title'); // passed
$field->assertHandle('Not The Same'); // failed

$field = CustomField::fake('title');
$field->value('Example Title');
$field->transform(function ($name, $value, $data) {
    return "{$data['prefix']} {$value}";
});
$field->assertTransform('Prefixed Example Title', ['prefix' => 'Prefixed']); // passed
$field->assertTransform('Example Title', ['prefix' => 'Prefixed']); // failed

$field = CustomField::fake('title');
$field->rules('
$field->assertValidation(''); // failed