ngiraud / posttype-management
Add or remove a simple posttype configuration to your Laravel application.
Requires
- php: >=7.0
- illuminate/auth: ~5.3.0|~5.4.0|~5.5.0|~5.6.0
- illuminate/container: ~5.3.0|~5.4.0|~5.5.0|~5.6.0
- illuminate/contracts: ~5.3.0|~5.4.0|~5.5.0|~5.6.0
- illuminate/database: ~5.4.0|~5.5.0|~5.6.0
- spatie/laravel-sluggable: ^2.1
Requires (Dev)
- orchestra/testbench: ~3.3.0|~3.4.2|^3.5.0
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-12-16 08:28:41 UTC
README
This package allows you to add or remove a simple "posttype" configuration to your Laravel application.
Installation
Prerequisites
- This package can be used in Laravel 5.4 or higher
Step 1
You can install the package via composer:
composer require ngiraud/posttype-management
Step 2
In Laravel 5.5 the service provider will automatically get registered. In older versions just add the service provider in the config/app.php file:
'providers' => [ // ... NGiraud\PostType\PostTypeServiceProvider::class, ];
Usage
Create a post type
This command will create a model, resource controller, migration and factory into your Laravel project.
It will also add a route in the routes/web.php file.
php artisan posttype:create MYPOSTTYPE [-m|--migrate] [--ctrl-folder=MYFOLDER]
If you want to specify a custom path to your Controller directory inside the App/Http, you can use:
php artisan posttype:create MYPOSTTYPE --ctrl-folder=MYFOLDER
The route will be namespaced with the folder name.
If you want to migrate the generated migration instantly:
php artisan posttype:create MYPOSTTYPE -m
Remove a post type
This command will remove the model, resource controller, migration and factory from your Laravel project.
php artisan posttype:remove MYPOSTTYPE
!!! The associated route will not be removed !!!
Columns
The default columns added to a post type are:
$table->increments('id'); $table->unsignedInteger('user_id'); $table->unsignedInteger('parent_id')->nullable(); $table->string('name'); $table->string('slug'); $table->unsignedTinyInteger('status'); $table->text('excerpt')->nullable(); $table->longText('content')->nullable(); $table->timestamp('published_at')->nullable(); $table->timestamps(); $table->softDeletes();
The package uses softDeletes columns.
The user_id column is automatically saved in the model boot event saving with the authenticated user id.
The published_at column is automatically saved as well as the user_id if the status is published.
Default comportment
Post types queries have a global scope to only fetch published data.
A relationship exists between a user and the posttype called owner(). Two relationships exist between a posttype parent and a posttype children :
- The first one is parent();
- The second one is children();
A public function "rules" exists, you can override it if you want.
To add another status you just have to add a constant in the model called STATUS_MYNEWSTATUS :
Credits
- Nicolas Giraud