rinvex/laravel-support
Helper utilities and support classes for Laravel apps: common macros, traits, contracts, and shared helpers used across Rinvex packages. A lightweight toolbox to reduce boilerplate and keep code consistent across projects.
Installation
composer require rinvex/laravel-support
Publish the config (if needed):
php artisan vendor:publish --provider="Rinvex\Support\Providers\SupportServiceProvider"
First Use Case: Basic Validator Use the built-in validator trait in a controller or form request:
use Rinvex\Support\Traits\Validator;
class MyController extends Controller
{
use Validator;
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|string|max:255',
'email' => 'required|email',
]);
// Proceed with logic
}
}
Key Entry Points
Rinvex\Support\Traits\Validator (for form validation).Rinvex\Support\Http\Controllers\Controller (includes common methods like respond()).Rinvex\Support\Contracts\* (e.g., HasResource, HasApiResource).Rinvex\Support\Http\Requests\FormRequest for reusable validation logic:
use Rinvex\Support\Http\Requests\FormRequest;
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string',
'email' => 'required|email|unique:users',
];
}
}
addRules() or mergeRules() in traits to extend validation dynamically:
$this->addRules(['age' => 'numeric|min:18']);
Rinvex\Support\Http\Controllers\Controller for shared methods:
use Rinvex\Support\Http\Controllers\Controller;
class UserController extends Controller
{
public function index()
{
return $this->respond(['data' => User::all()]);
}
}
respond() for consistent JSON/API responses:
return $this->respond([
'message' => 'Success',
'data' => $user,
], 200);
HasResource trait to auto-generate resource routes:
use Rinvex\Support\Traits\HasResource;
class UserController extends Controller
{
use HasResource;
protected $model = User::class;
}
HasApiResource for API-specific logic:
use Rinvex\Support\Traits\HasApiResource;
class UserResource extends JsonResource
{
use HasApiResource;
}
laravel-modules, laravel-activitylog).SupportServiceProvider:
$this->app->bind('custom.helper', function () {
return new CustomHelper();
});
ValidatesRequests) to prevent method conflicts.app.debug). Review config/support.php after publishing.dd($this->errors()) to inspect validation failures in traits.HasResource generates unexpected routes, override getResourceRoutes():
protected function getResourceRoutes()
{
return ['index', 'store', 'show']; // Customize as needed
}
Rinvex\Support\Contracts\HasValidator to extend functionality:
class MyValidator implements HasValidator
{
public function validate(array $data)
{
// Custom logic
}
}
respond() in your controller to customize API responses globally.Validator::extend():
Validator::extend('custom_rule', function ($attribute, $value, $parameters) {
return $value === 'allowed';
});
Validator are lightweight; avoid instantiating heavy dependencies in them.HasResource, cache route definitions for large applications:
protected static $cachedRoutes = [];
How can I help you explore Laravel packages today?