Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Checkbox List Bundle Laravel Package

it-blaster/checkbox-list-bundle

A lightweight PHP bundle for building checkbox lists: define options, render flat or grouped checkbox sets, and manage selected values in forms and list UIs. Useful for reusable selection controls in Laravel/PHP applications.

View on GitHub
Deep Wiki
Context7

Getting Started

v1.0.0 is the initial release — there is no migration path, no deprecation list, and no prior assessment to diff against. Treat adoption as greenfield: you are the first generation of users, so validate before you commit.

Minimal steps:

  1. Read composer.json first. Confirm the require block's PHP and illuminate/* constraints against your app's version. A v1.0.0 package frequently ships with a narrower matrix than you expect (e.g. Laravel 10/11 only, PHP 8.2+).
  2. Install into a scratch app, not production. composer require <vendor>/<package> in a throwaway Laravel skeleton, then run php artisan about and php artisan package:discover to confirm the service provider registers cleanly.
  3. Check for publishable assets. Run php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" (or --tag=...) and diff what lands in config/, database/migrations/, and resources/. Read the published config end-to-end — it is usually the most accurate documentation in a 1.0.0.
  4. Run the package's own test suite if it ships one, then write one smoke test in your app: resolve the package's main binding from the container and assert it is an instance of the documented contract.

Where to look first, in order: composer.json → src/*ServiceProvider.php → published config → README → CHANGELOG. The service provider tells you more about real behaviour (bindings, singletons, event listeners, macros) than the README does.

First use case: pick the single narrowest end-to-end path the package advertises — one facade call, one artisan command, one middleware — and get it working in the scratch app before designing anything around it.

Implementation Patterns

Wrap it behind your own boundary. In a 1.0.0 package the public API is a guess. Define a small interface in your domain (App\Contracts\ThingGateway) and let the package sit behind an adapter. When 1.1.0 renames a method, you change one class instead of grepping 40 call sites.

Config over code. Publish the config file, commit it, and drive behaviour from config/*.php and .env rather than hardcoding constructor arguments. This is also your escape hatch if a default turns out to be wrong in production — you can flip it without a deploy of application logic.

Register via the container, not static calls. If the package exposes a facade, prefer injecting the underlying contract. Facades are convenient in a controller but painful in queued jobs and unit tests where the root facade isn't booted.

Roll out behind a flag, per-service. Enable the package for one job/queue/route first. Because there is no release history, you have no signal on how it behaves under concurrency, retries, or large payloads. A canary endpoint or a single queued job gives you that signal cheaply.

Test at the seam. If the package ships fakes or a ::fake() helper, use them. If not, write contract tests against your adapter and a single integration test that hits the real binding — that integration test is what catches a breaking change on the next composer update.

CI matrix from day one. Add the lowest and highest supported Laravel/PHP versions to your pipeline now. First releases are where version-constraint bugs live, and you want to discover them in CI rather than when you bump laravel/framework.

Gotchas and Tips

  • Pin conservatively. Use "^1.0" but review every changelog before running composer update. A 1.0.0 package has no established policy on whether 1.1.0 is additive or breaking; assume the worst until a changelog proves otherwise.
  • No deprecations means no warnings. Unlike mature packages, nothing will tell you a method is going away. Watch the repo's issue tracker and open PRs for a release or two — that is your only early-warning system.
  • Auto-discovery and config caching. The service provider is discovered at install time. In deployments that run php artisan config:cache and route:cache, confirm provider registration order; a package that depends on another provider being booted first will fail silently in cached mode but work locally.
  • vendor:publish --force is destructive. On the first release, publish tags are unversioned. Publishing again after an upgrade can overwrite config you've customised. Record which tags you published and diff manually instead of re-forcing.
  • Queued workers must be restarted after install or config changes (php artisan queue:restart). A package that hooks into the container will appear "not working" purely because the long-lived worker still holds the old container.
  • Debugging checklist, in order: (1) php artisan config:clear — stale config is the single most common false alarm; (2) confirm the provider is in bootstrap/providers.php or config/app.php; (3) dd(app()->bound(Contract::class)) to prove the binding exists; (4) check whether the package registers middleware you haven't attached to a route.
  • Prefer extension points over forks. If the package dispatches events, listens for them. If it binds contracts in the container, app()->bind() your own implementation in a service provider — do not edit vendor/. Forking a 1.0.0 is a maintenance trap you cannot escape later.
  • Budget for churn. Plan as if one breaking change lands in the first three releases. If the adapter boundary described above feels like overkill for the size of the feature, that is a signal the package may not be worth the dependency yet.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib