umanit/block-bundle
Umanit BlockBundle is a Symfony bundle for creating, managing, and rendering reusable content blocks. It provides Doctrine-backed block entities and Twig integration, making it easy to compose flexible page sections without duplicating markup across templates.
composer require <vendor>/<package> and publish the config: php artisan vendor:publish --tag=<package>-config. In 3.0.x the translation delivery endpoint is driven entirely from that config, so read it top to bottom before writing any code — the host/domain key is the first thing to locate.php artisan about or php artisan route:list --path=translations). If the package registers routes, you should see them bound to the main app domain until you change the config.translations.example.com at the app, set the domain key (typically config('<package>.domain') or the equivalent env var like <PACKAGE>_DOMAIN), then php artisan config:clear && php artisan route:clear and hit the endpoint with curl -H "Host: translations.example.com" https://your-app/... to verify routing rather than guessing from the browser.null locally so the routes stay on localhost/*.test; only set it in staging and production env files..env per environment (TRANSLATIONS_DOMAIN=translations.example.com) and never hardcode it in config/. Local and CI should resolve to null, which usually means "serve on the default host."throttle: and a CORS middleware if a JS front end consumes the JSON.__()/@lang helpers; use the HTTP endpoint only for clients that can't read PHP files (mobile, standalone SPA). For SPAs, fetch once at boot into an i18n store and key off the locale segment rather than refetching per component.boot(), not in a middleware that runs after route matching.fallback_locale explicitly and test a key that only exists in the fallback locale; missing-key handling differs between the file driver and the HTTP endpoint.php artisan config:clear, route:clear, and on Octane php artisan octane:reload. Config read at boot is not re-read per request.http:// or the wrong host, set TrustProxies correctly (* or your LB CIDRs) — the package builds URLs from the request host and forwarded headers.www. and trailing-dot hosts are distinct route hosts. Pick one canonical form, redirect the other at the web server, and don't expect the package to normalise it.route:list will show duplicates and route() may resolve to the wrong one. Namespace or rename via config where supported.OPTIONS is a missing preflight handler, not a package bug.vendor:publish --force into a temp path, then compare) since new config keys in patch releases are commonly added without a migration path. Clear caches after every deploy that touches config.php artisan route:list --path=<path> -v (confirms host binding), curl -H "Host: ..." against the app directly to bypass DNS/CDN, then curl against the public domain to confirm the edge layer. If those disagree, the problem is DNS/CDN, not Laravel.How can I help you explore Laravel packages today?