genl/matice
Matice is a Laravel package for creating simple, flexible menus. Build nested menu structures, add links and custom attributes, and render them in Blade views through a clean, configurable API. Ideal for application navigation, admin panels, and sidebar menus.
lang/ files (developer-owned) or in the database (editor-owned). Matice backs the second model — it stores translations in DB tables and exposes a management UI, so content and marketing can ship copy changes without a deploy or an engineer.spatie/laravel-translation-loader. Low integration cost (Laravel-native, no external vendor, no per-seat or per-word pricing) makes it attractive for teams that need editing capability but not full TMS workflow.@translations Blade directive now accepts only/except overrides. This lets a PM phase a migration rather than doing a flag-day switch: render DB-managed strings only for the sections/keys a given view should own (e.g. a marketing landing page or checkout microcopy), while the rest of the app keeps reading static files. It also limits blast radius when non-technical editors have write access — they can only affect the groups you surface.preg_split() null-limit deprecation fix future-proofs the package for PHP 8.4, which materially affects upgrade planning if PHP 8.4 is on your platform roadmap this year. The CI change (disabling Composer security-advisory blocking to test older Laravel releases) is a testing-only relaxation, not a runtime one — but it does mean the CI signal is slightly weaker than "installable with advisories enforced."Consider it when:
lang/ files handle poorly.Look elsewhere when:
Adoption guardrails: pin the version, confirm Laravel/PHP support against your matrix (CI covers older Laravel releases but with advisory blocking disabled — validate in your own pipeline), and define who owns editorial access before enabling the UI.
To executives: This is a small, Laravel-native dependency that lets marketing and content edit in-product copy directly instead of filing tickets for developer releases. The business case is cycle time and engineering toil, not capability — we ship copy changes in minutes rather than days, and we avoid a translation-vendor contract for a need that doesn't yet justify one. Cost is a Composer dependency plus modest integration effort; there is no license fee and no product copy leaving our infrastructure. Risk to note: it is a small open-source project, so we pin the version and keep static language files as the fallback. Recommendation is to adopt it for editor-owned copy only, not as the system of record for all strings.
To engineering: 1.3.0 is a low-risk upgrade — no breaking changes. The substantive addition is only/except on the @translations directive, which lets us scope which translation groups a view or editor surface touches, so we can migrate copy incrementally instead of all at once. The release also fixes a preg_split() null-limit deprecation for PHP 8.4 readiness, which matters for our platform upgrade path. One caveat: CI now disables Composer security-advisory blocking to test older Laravel versions, so that pipeline is not our security gate — our own audit step remains authoritative. Validate lookup performance under cache and confirm our Laravel/PHP versions are covered before rollout.
How can I help you explore Laravel packages today?