nightdiraven / amari
Some monkey translation service and json field for laravel. Do not install it. I'm serious
This package's canonical repository appears to be gone and the package has been frozen as a result.
Requires
- php: >=7.0
This package is not auto-updated.
Last update: 2022-08-30 07:09:53 UTC
README
Some useful things for laravel ^5.* and php ^7.0 with monkey code insine inside
Be free to use it anywhere under MIT ...
Package refactor after 0.0.3 version after 14.03.2017 use this version for compatibility
Available traits:
Sluggable
Simply covert source field to slug field using Illuminate\Support\Str::slug function.
use Amari\Traits\Sluggable; class Model extends \Illuminate\Database\Eloquent\Model { use Sluggable; // Optional, default 'title' protected static $slugSource = 'name'; // Optional, default 'slug' protected static $slugField = 'route'; public static function boot() { parent::boot(); static::saving(function (Model $item) { $item->generateSlug(); //Check dirty slug before save }); } ... }
This code generate route attribute from name if route do not provided, if some entity already exists in database with current slug, slug will append "-$index" from 1 to infinite unless script find free...
Jsonable
Another monkey in your lawn. You now have full access to json field as usual attributes of your model. (only 1-2 level of them)
How it works:
use Amari\Traits\Jsonable; class Model extends \Illuminate\Database\Eloquent\Model { use Jsonable; protected $fillable = ['title', 'header_content', 'block2', 'block3', 'images', 'meta-title', 'keywords', 'description'] // Required static field with map: real model attribute to json attributes, that will be save in real protected static $json = [ 'body' => [ 'header_content', 'block2', 'block3', 'images' ], 'meta' => [ 'meta-title' //it's must be unique (not title, if real title exists) to other or it have more priority agains real fields 'keywords', 'description', ], ... ]; ... }
Now you can access to second-level attributes as usually:
$model = new Model([ 'title' => 'Awesome monkey!', 'header_content' => 'Wellcome again!', 'block3' => 'brilliant brilliant!', 'images' => [ 'image1' => '/path/to/image/1.png', 'image2' => '/path/to/image/2.png', 'image3' => '/path/to/image/3.png', ] ]); $model->block2 = 'Some test'; dd(model->header_content); //Wellcome again! dd(model->images); //Array [...] dd(model->block2); //Some test
...