ngiraud/posttype-management

Add or remove a simple posttype configuration to your Laravel application.

1.1.1 2018-07-20 10:13 UTC

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