always-open / sidekick
A collection of helper classes to make fighting the good fight easier
Fund package maintenance!
always-open
Installs: 3 046
Dependents: 3
Suggesters: 0
Security: 0
Stars: 1
Watchers: 7
Forks: 2
Open Issues: 1
Requires
- php: ^8.0.0|^8.1.0|^8.2.0
- illuminate/contracts: ^9.0|^10.0
- jdorn/sql-formatter: ^1.2
- league/flysystem-aws-s3-v3: ^3.0
- slickdeals/statsd: ~3.0
- spatie/laravel-package-tools: ^1.4
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^6.0
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
- 4.x-dev
- v4.1.9
- v4.1.8
- v4.1.7
- v4.1.6
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.0
- v3.x-dev
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.x-dev
- v2.1.2
- v2.1.0
- v2.0.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- dev-fix/styling
- dev-feature/debounce-job-add-maximum-debounce-config-option
- dev-revert-laravel-9-package-updates
- dev-main
- dev-fix/atomic-action-serialization
- dev-chore/required-option-trait
This package is auto-updated.
Last update: 2024-10-15 20:16:21 UTC
README
Collection of helper classes to make fighting the good fight even easier.
Installation
You can install the package via composer:
composer require always-open/sidekick
Version Support
Usage
Helpers
String Helper
$ids = AlwaysOpen\Helpers\Strings::stringIdsToCollection('1,3,45, asdf,66,1,45,3'); var_dump($ids);
Routes Helper
This helper stops redirect loops where a url()->previous()
might be used but the user could have directly input the
url so previous
and current
are the same. This helper stops that from happening while allowing you to specify where
to go if that scenario happens.
If the user can edit user profiles and reach it from multiple screens the redirect response after saving might look like this:
return response()->redirectTo( AlwaysOpen\Helpers\Routes::toRouteIfBackIsLoop('user.report') );
Here the user will either go to their previous URL or get sent to the user report.
Traits
ByName
Add the trait to your model:
<?php namespace App\Models; namespace AlwaysOpen\Sidekick\Models\Traits\ByName; class OrderStage extends Model { use ByName; const NEXT_DAY = 'Next Day'; ... }
Use the trait to get the model by its name:
$overnight = OrderStage::byName('overnight');
Works nicely when you're doing work with consts:
$overnight = OrderStage::byName(OrderStage::NEXT_DAY);
CascadeUpdate
This trait is good if you need to update a last updated timestamp on related models such as a parent child relationship or line items on a document.
In the example class Docuemnt
has multiple LineItem
instances as children.
Within this exmaple you will need to override the getRelationshipsToUpdate
method:
class LineItem extends Model { use CascadeUpdate; public function getRelationshipsToUpdate() : array { return [ 'Document', ]; } public function CascadeUpdate() : HasOne
When an instance of LineItem is saved the UPDATED_AT
column on the owner Document
will be updated as well.
Ordered
This trait ensures that all instances have a sort column value that is next in line. Future TODO is to make it update other instances when one of their sort values is updated to keep all in proper order.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.