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

Nova Permissions Field Laravel Package

adevpmftc/nova-permissions-field

A Laravel Nova field that lets you manage model permissions directly from the Nova resource form, with a checkbox-style interface for assigning and revoking permissions without leaving the admin panel.

View on GitHub
Deep Wiki
Context7

Getting Started

Because 0.1.0 is the first tagged release, treat it as a pre-stable package: there is no upgrade history to read, so the source is the documentation.

  1. Read the package metadata first. Open composer.json and check require (PHP and illuminate/* constraints) and the extra.laravel.providers / extra.laravel.aliases block. That tells you whether the service provider is auto-discovered or must be registered by hand, and whether it will even install alongside your app's Laravel version.
  2. Locate the extension points. Look in src/ for a service provider, a config/ directory, and any Contracts/ or Concerns/ folder. These three locations define 90% of how you will actually use the package day to day.
  3. Publish and diff the config. Run php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" (or --tag=config) and read the published file. Any package with a config file has its behaviour decided there — read it before writing code.
  4. First use case: a read-only proof of concept. Resolve the package's main class from the container in php artisan tinker (or a throwaway route) and call the least destructive method available. Confirm it boots, resolves dependencies, and talks to whatever backing service it needs before you wire it into a controller or job.

Do this inside a feature test rather than tinker if the package touches the database or an external API — you want the first invocation to be repeatable.

Implementation Patterns

  • Resolve from the container, don't new it up. Even if the package ships a facade, prefer constructor injection of the underlying class or contract in your own services. Facades are fine in controllers and Blade; they get painful in queued jobs and unit tests.
  • Wrap it in a thin adapter. Create your own App\Services\... class that depends on the package and exposes only the two or three operations your app needs. When 0.2.0 renames a method (likely, at this stage), you change one file instead of thirty.
  • Bind to an interface you own. If the package offers a contract, or if you only need a couple of methods, define your own interface in App\Contracts and bind the package implementation to it in a service provider. This is the cheapest insurance against a breaking minor release.
  • Configuration over code. Set credentials, endpoints, timeouts, and driver names in config/ and .env, then reference them through config('package.key'). Never hardcode a value the package already exposes as config.
  • Queue long-running work. If the package performs HTTP calls, file operations, or third-party sync, call it from a job with $tries, $backoff, and $timeout set explicitly. First releases rarely ship their own retry logic.
  • Test against the package's own fakes. Many Laravel packages ship a ::fake() or a testing trait. Grep the tests/ directory of the package itself — the maintainer's test suite is the best usage documentation available at 0.1.0.
  • Pin the version in CI. Add the package to your dependency-review or composer.lock diff check so a patch release cannot silently land in production.

Gotchas and Tips

  • 0.1.0 means the public API is not frozen. Under semver, anything below 1.0.0 may break in a minor bump. Constrain to "^0.1" at minimum, and consider an exact pin ("0.1.0") until you have read a changelog with actual content.
  • Auto-discovery may not be configured. If extra.laravel.providers is absent, you must register the provider in bootstrap/providers.php (Laravel 11+) or config/app.php. A "class not found" or "config key missing" error is almost always this.
  • mergeConfigFrom vs. publish. A merged config only supplies defaults; a published config file wins entirely. If you publish early and the package adds a new key in a later release, your published file will be missing it and you will get a null where you expect a default. Re-publish and diff on every upgrade.
  • Config caching. After editing .env or the published config, run php artisan config:clear. Cached config is the single most common cause of "my setting isn't taking effect."
  • Check for a defer flag on the provider. A deferred provider that fails to register its bindings will throw only when the class is first resolved, which can be far from the real cause. Reproduce in a test, not in a request.
  • Watch the Laravel constraint, not just PHP. A package can install cleanly on your PHP version and still be incompatible with your framework version if the illuminate/support constraint is loose.
  • Debug by reading the source, not the README. At 0.1.0 the README frequently lags the code. When behaviour surprises you, vendor/vendor/package/src/ is the ground truth; step through with Xdebug or add a temporary dump() in the provider's register() method.
  • Extension points to prefer: container bindings, published config, and events the package dispatches. Avoid subclassing package classes or overriding vendor files — both break on the next composer update.
  • Record what you learn. Since upstream documentation is thin, keep a short internal note of the exact call signatures you rely on. When 0.2.0 arrives, that note is your upgrade checklist.
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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package