Laravel package for better artisan commands for making Model etc.
composer require wamesk/laravel-commands
Use this command to publish config.
php artisan vendor:publish --provider="Wame\LaravelCommands\LaravelCommandsServiceProvider"
You can find config in config folder as shown below.
project
└─ config
└─ wame-commands.php
You can configure package commands here
// config/wame-commands.php
<?php
return [
/* Version of ApiController you want to develop (v1, v2, v3, null) */
// 'version' => 'v1', // Default: null
/* Typ of id your project is using (options: id (basic integer), uuid, ulid) */
// 'id-type' => 'uuid', // Default: ulid
/* Enable or disable sorting in migration and model */
// 'sorting' => false, // Default: true
/* Per page pagination default */
// 'per_page' => 10, // Default: 10
/* What language mutations should it generate. All will contain EN phrases. */
// 'langs' => ['en'], // Default: en
/* You can disable commands that wame:make will run. By default, all will run. */
'make' => [
// 'api-controllers' => false,
// 'events' => false,
// 'lang' => false,
// 'listeners' => false,
// 'migration' => false,
// 'model' => false,
// 'nova' => false,
// 'observer' => false,
// 'policy' => false,
],
];
This command will run all php artisan
commands listed below.
- wame:api-controller
- wame:events
- wame:lang
- wame:listeners
- wame:migration
- wame:model
- wame:nova
- wame:observer
- wame:policy
Run command with name parameter at the end. Name parameter is your Model name. (example: User)
php artisan wame:make <name>
After running this command it will ask you if you want to make custom configuration.
Would you like to customize configuration for current model? (yes/no) [no]:
>
You can choose between yes and no.
If you choose no (default) it will run all commands. Note: Make sure you have set your config file.
If you choose yes it will ask you which commands should run (Default being yes). (Example shown below)
Note: if you make a custom configuration while running command it will ignore commands set false in config file.
Create Model (yes/no) [yes]:
>
This command will create base Model with preset methods.
It is configurable by these configs.
// wame-commands.php
// Will add HasUuids or Ulids to model depending on id-type
'id-type' => 'ulid', // Other options: id, uuid
// Will add SortableTrait and Sortable interface to class along with $sortable array config
'sorting' => true, // Other option: false
Run this command using
php artisan wame:model
This command will create base Nova resource with preset methods.
It is configurable by these configs.
// wame-commands.php
// Will add SortableTrait and Sortable interface to class along with $sortable array config
'sorting' => true, // Other option: false
Run this command using
php artisan wame:nova
This command will create base Migration with preset columns.
It is configurable by these configs.
// wame-commands.php
// Will add id column depending on id-type
'id-type' => 'ulid', // Other options: id, uuid
// Will add `$table->unsignedInteger('sort')->nullable();` column
'sorting' => true, // Other option: false
Run this command using
php artisan wame:migration
This command will create base Observer with preset functions and Events.
Run this command using
php artisan wame:model
This command will create base Events with preset construct, function and classes.
Run this command using
php artisan wame:events
This command will create base Listener jobs.
Run this command using
php artisan wame:listeners
This command will create base api Controller with preset functions, responses and validation. It will also create base Model Resource and include it in Controller.
Run this command using
php artisan wame:api-controller
This command will create language files according to the languages defined in the config.
/* What language mutations should it generate. All will contain EN phrases. */
'langs' => ['en'], // Default: en
Output
<?php
return [
'label' => 'Users',
'plural' => 'Users',
'singular' => 'User',
'detail' => 'User: :title',
'create.button' => 'Create user',
'update.button' => 'Update user',
];
Run this command using
php artisan wame:lang
This command creates a policy if you use the serenysoft/nova-permissions library
php artisan wame:policy
Functions used in commands and for your project are documented here.
Include this util in your file using
use Wame\LaravelCommands\Utils\Helpers;
Helpers::createDir()
function is used to create directory in your project.
It requires directory path parameter (string) and optional second parameter with chmod rule.
This function starts at app folder.
Helpers::createFile()
function is used to create file and/or open file in your project.
It requires path of file, name and extension parameter (string) and optional second parameter is mode (string) Example: 'w' / 'r'.
This function starts at app folder.
Helpers::camelCaseConvert()
function is used to convert string
It requires string parameter to convert.
Second parameter is separator (string) (default: '_'). Optional parameter.
Third parameter is lower (bool) (default: false). Optional parameter. Changes if words should start with lower case.
Example:
$camelCase = Helpers::camelCaseConvert('SuperModel');
return $camelCase; // returns 'super_model'
Validator used by default in this package.
It works by chaining functions and getting response.
Response is generated by wamesk/laravel-api-response
package functions.
To better understand how response works checkout documentation for response package here
This function is final function. Always last. It requires data and rules for validation. Documentation for rules click here
Usage example:
$data = ['email' => '[email protected]', 'password' => 'password'];
$validator = Validator::validate($data, [
'email' => 'email|required|max:255',
'password' => 'required|string'
]);
if ($validator) return $validator;
In case of validation error it will return
{
"data": null,
"code": null,
"errors": {
"email": [
"validation.required"
]
},
"message": null
}
This function is add internal code in response. You can pass second parameter that changes prefix for message translation.
Usage example:
$data = ['email' => '[email protected]', 'password' => 'password'];
$validator = Validator::code('1.2')->validate($data, [
'email' => 'email|required|max:255',
'password' => 'required|string'
]);
if ($validator) return $validator;
In case of validation error it will return
{
"data": "1.2",
"code": null,
"errors": {
"email": [
"validation.required"
]
},
"message": "api.1.2"
}
This function doesn't change response visually but changes status code of response. Default status code is 400 (Bad Request). If you want to chain all functions it can look like this. Status code is always integer.
Validator::statusCode($statusCode)->code($code)->validate($data, $rules);