Package Data | |
---|---|
Maintainer Username: | venoudev |
Maintainer Contact: | philipretl@gmail.com (philipretl) |
Package Create Date: | 2020-06-20 |
Package Last Update: | 2022-04-01 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-09 15:07:16 |
Package Statistics | |
---|---|
Total Downloads: | 114 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
An awesome package for construct a very understandable Json structure response in your Laravel or Lumen proyect for your API Rest.
composer require venoudev/results
in your bootstrap/app.php file, configure
/**
* Venoudev Results
*/
$app->register(Venoudev\Results\Providers\LumenResultsServiceProvider::class);
php artisan results:install-resources
php artisan vendor:publish --tag=results-resources
update your config/app.php file whit this.
...
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => env('APP_LOCALE', 'en'),
...
mkdir resources/lang
cp -R vendor/venoudev/results/resources/lang/en_results_venoudev resources/lang
create file in config/app.php (if you don´t see the folder config create this.)
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'name' => env('APP_NAME', 'product-service'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/
'debug' => env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => env('APP_LOCALE', 'en'),
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
];
later define in your .env file
APP_LOCALE=en_results_venoudev
and execute on your console
php artisan config:clear
in your app/config/app.php add this code in aliases array:
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
//.... more alisases
/*
* Custom Aliases
*/
'ResultManager' => Venoudev\Results\Facades\ResultManagerFacade::class,
],
in bootstrap/app.php create an array with your facades and include ResultManager Facade
$facades = [
'\Venoudev\Results\Facades\ResultManagerFacade' => 'ResultManager',
'Illuminate\Support\Facades\App' => 'App'
];
$app->withFacades(true ,$facades);
$app->withEloquent();
php artisan make:validator Example
generate =>
<?php
namespace App\Validators;
use Illuminate\Support\Facades\Validator;
use Venoudev\Results\Exceptions\CheckDataException;
class ExampleValidator
{
public static function execute($data){
$validator=Validator::make($data,[
// Your awesome laravel validations here
]);
if ($validator->fails()) {
$exception = new CheckDataException();
$exception->addFieldErrors($validator->errors());
throw $exception;
}
return;
}
}
php artisan make:action Example
generate =>
<?php
namespace App\Actions;
class ExampleAction
{
public static function execute($data){
// Your awesome code here.
return;
}
}
php artisan make:service Example
generate =>
<?php
namespace App\Services\Contracts;
interface ExampleService {
// Your awesome methods to implement here.
}
<?php
namespace App\Services;
use App\Services\Contracts\ExampleService;
use Illuminate\Http\Request;
class ExampleServiceImpl implements ExampleService{
// Your awesome implemented methods here.
}
in the method boot of your ServiceProvider or custom provider bind contract to implementation and use your contract in the controllers for example throught dependency inyection
app\Providers\AppServiceProvider.php
use App\Services\ExampleServiceImpl;
use App\Services\Contracts\ExampleService;
...
public function boot()
{
$this->app->bind(ExampleService::class,ExampleImpl::class);
}
{
"success": "bool",
"description": "string",
"data": { "dynamic" },
"errors": [
{
"error_code": "CODE",
"field": "field || NOTHING",
"message": "string"
}
],
"messages": [
{
"message_code": "CODE",
"message": "string"
}
]
}
{
"message_code": "LOGIN_SUCCESS",
"message": "Login do correctly"
}
{
"error_code": "REQUIRED",
"field": "email",
"message": "The email field is required."
}
{
"error_code": "STATUS_USER",
"field": "NOTHING",
"message": "The status of user is baned."
}
Code 200
Ok
Content
{
"success": true,
"description": "Welcome Be Awesome!",
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiMjAxZWIzN2IyMTVkNTc5OWU0ZDg2NjJlNTRkYWM5OWEyNTYzMWE3OWM4MWZiMGEzNmRkMDY3NzdlN2M3ZTllZjYzMTA1ZjNiZmYwMzgxOWQiLCJpYXQiOjE1OTI2OTU4ODYsIm5iZiI6MTU5MjY5NTg4NiwiZXhwIjoxNjI0MjMxODg2LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.JgK84-CDMJ6xOQlmpnSdvtTGu0to0mDi0tjY6JhZCeGrfWSWb23SEf3rNDKbtWWiSAp3yBnP08v9J9GYrMwtx9ItYoANGn8qjSr2GVep2bK9GjjkErOkDWOIXeEw7tPxD5KD4xWXKY6_uiGX3Jj5m6EbhFsxzj1q1nIpJtGBxkVNQvg1fDtUGjc2qA5aFiqjRGDajFTPMyojyTOvf-tKhid_RWupdz5H4fBBjODMCAw4XBmqRhvT6WHv0WWAyvwoJCzAQTWqiEpctqthc-0HzpGTBxuqsdj71poowFJMtnL6r6_AYsEOn2IrDsR8tNjIBQ05iDrM6KZkHTuHVsKPo7augrwf6glpsuiASuy4Au1VlwJVUfno3xjCTcX7vsNzvqVSb6E2_0FWTTMwSHqkWQQNfI03daDOFyVej69U_4DqbN_cvcl9rZJp-WYXiB3C89Za1UwSxp8Ff9xcYowrw8vwb0PHvnPpkMTeHAnS59zLQrl5R-fqh-PKJe0gACK3W5-weJqoyE7_B-FziFqZdRhm7zwvSEZW2myEFdNOiUBeJ7OUV81a5CP1Gt7C0n5ejQhoPN5s60qHcSiYQFaKuhI_6rWLW9bNlFSqzHTA1DHYFFBQg4j6Vx-EqaAuZGw_cCYZMpF95A8C9_kLtjh1ayHhKae773BCulf_1ZEAYE",
"roles": [
"admin"
]
},
"errors": [],
"messages": [
{
"message_code": "LOGIN_SUCCESS",
"message": "login do correctly"
}
]
}
Code 400
Bad Request
Content
{
"success": false,
"description": "exist conflict whit the request, please check the errors and messages",
"data": [],
"errors": [],
"messages": [
{
"message_code": "FAILED_AUTH",
"message": "Invalid login credential"
}
]
}
Code 400
Bad Request
Content
{
"success": false,
"description": "exist conflict whit the request, please check the errors and messages",
"data": [],
"errors": [
{
"error_code": "REQUIRED",
"field": "email",
"message": "The email field is required."
},
{
"error_code": "REQUIRED",
"field": "password",
"message": "The password field is required."
}
],
"messages": [
{
"message_code": "CHECK_DATA",
"message": "The form has errors whit the inputs"
}
]
}
https://venoudev.com