wamesk/laravel-nova-bank-field
A custom Laravel Nova field for capturing and displaying bank details in your admin panel. Drop it into any Nova resource to manage account information with a clean, consistent input experience, keeping financial data simple to edit and easy to read.
composer.json for the hard constraints this release implies: laravel/nova: ^4.0, laravel/framework: ^9.0|^10.0, and php: ^8.0. If the app is still on Nova 3, stay on the previous major line — there is no dual-compatibility branch here.composer require <vendor>/<package>:^4.0, then add the tool to the tools() array in app/Nova/NovaServiceProvider.php. Most Nova tools also expose cards, fields, or resources; those are registered separately in cards(), resources(), or via the tool's own service provider.php artisan vendor:publish --provider="<Vendor>\<Package>\ToolServiceProvider" (or the tag listed in the README), then php artisan nova:publish so compiled JS/CSS land in public/vendor/<tool>. Skipping this is the single most common cause of a blank tool screen.src/ToolServiceProvider.php (menu registration, Nova::script()/Nova::style() calls, route registration) and resources/js/tool.js (the Vue entry point). For behavior, src/Http/Controllers and routes/api.php show what the front end actually calls.canSee()/authorize(). Get that rendering end-to-end before wiring in fields or actions.boot() via Nova::tools() or the menu()/renderNavigation() hooks. Gate visibility with canSee(Request $request) rather than hiding it in the UI — Nova will still expose the underlying routes otherwise.nova-vendor/{tool} prefix and consumed with Nova.request() from Vue. Keep that contract thin: return plain JSON from controllers and let the Vue components own presentation. Do not mix Blade-rendered tables into a tool page alongside Inertia/Vue routing.NovaServiceProvider::tools(); keep the package provider in composer.json's extra.laravel.providers so it boots in console/queue contexts too.Nova::whenServing() middleware, Gate checks) so CLI, queued jobs, and API consumers see the same rules as the UI. A canSee() that returns true while the routes are unprotected is a common audit finding.rm -rf node_modules package-lock.json && npm install), then rebuild assets. Nova 4's tooling scaffold changed from Nova 3 (Vue 3 + Inertia), so any locally customized webpack.mix.js/nova.mix.js or Vue 2 component code must be ported, not merged.CHANGELOG/compare link before adopting: the meaningful breaking changes are almost certainly in the front-end build, not the PHP API. Treat 4.0.0 as "Nova 3 branch frozen; all new work here."Vue 2, this.$set, filters, Nova.booting patterns) will fail silently or throw at build time. Check the console and npm run prod output first — build errors are far easier to diagnose than runtime blanks.php artisan nova:publish, hard-refresh, and confirm the file hash in public/vendor/<tool> changed. In production, ensure the deploy pipeline rebuilds and republishes assets rather than relying on committed public/ files.composer update on an app pinned to Nova 3 can resolve to a 4.x tag if constraints are loose ("*" or ^3.0 || ^4.0 written incorrectly). Pin explicitly in composer.json and commit the lockfile.nova-vendor routes are not automatically policy-protected. Verify every controller action in the tool has an explicit authorize/Gate call, especially for actions that mutate data.php artisan route:list | grep nova-vendor; 500s → storage/logs/laravel.log plus the Nova error modal's underlying response; "tool not in sidebar" → the tool is registered in tools() but canSee() is returning false for that user.Nova::script() for injecting per-page JS without a full rebuild, tool-level middleware for tenancy/audit logging, and translatable strings via the package's lang/ directory. Prefer these over forking the package — the Nova 3→4 branch split means patches applied to the old branch won't carry forward.How can I help you explore Laravel packages today?