- What is mulertech/seo-bundle used for in a Laravel application?
- It is an SEO toolkit for Laravel that helps manage meta tags, Open Graph, Twitter cards, canonical URLs, robots directives, JSON-LD structured data, and XML sitemaps from one bundle. Blade helpers keep head markup clean and consistent across pages. The package is a thin rendering layer, with JSON-LD emitted through the global schema_org_json_ld helper.
- How do I install mulertech/seo-bundle in Laravel?
- Install it as a standard Composer dependency for your Laravel application. The package is described as having no database, queue, cache, or filesystem footprint, and it does not require service provider ceremony for the JSON-LD helper. Check the README and composer.json for the exact Composer command and version constraints.
- Which PHP and Laravel versions does mulertech/seo-bundle v1.6.0 support?
- The provided release notes do not state the minimum PHP or Laravel versions for v1.6.0. You should check the package composer.json and README before upgrading. Pin the current version and run your application test suite against v1.6.0 to confirm compatibility.
- How do I emit BlogPosting JSON-LD structured data in Laravel?
- Call schema_org_json_ld('blogPosting', $payload) from a controller, Blade view, or API resource. The model or DTO passed as blogPosting must implement the package-owned BlogPostingSeoInterface contract. In v1.6.0, a non-BlogPostingSeoInterface object now throws InvalidArgumentException instead of silently emitting nothing.
- Why does schema_org_json_ld throw InvalidArgumentException after upgrading to v1.6.0?
- Version 1.6.0 changed previously silent no-render behavior into a thrown InvalidArgumentException for malformed payloads. A service without a string title, a breadcrumb item missing a key, or a non-BlogPostingSeoInterface object can now throw instead of quietly producing no output. This improves SEO observability, but any user- or CMS-controlled data path that was quietly degrading may now surface as an exception or 500 error.
- Does mulertech/seo-bundle safely escape HTML in FAQPage answers inside the JSON-LD script tag?
- The FAQPage answer value passes through as HTML, so the assessment treats sanitisation and markdown rendering as an application responsibility. The package must JSON-encode the payload well enough to prevent an unescaped script-closing tag or attribute breakout from escaping the script context. The notes specifically ask whether JSON_HEX_TAG and JSON_UNESCAPED_SLASHES are handled, so validate this with your own HTML payloads before production.
- How should I handle user or CMS data with mulertech/seo-bundle to avoid production 500 errors?
- Inventory every schema_org_json_ld call site by type and classify each data source as developer-controlled or user/CMS-controlled. For user-controlled sites, add boundary validation or a try/catch for InvalidArgumentException before deploying v1.6.0. This keeps malformed SEO payloads from taking down a page while still making bad structured data visible.
- Are empty breadcrumbList and faqPage lists allowed as no-ops in mulertech/seo-bundle?
- The available assessment asks whether breadcrumbList and faqPage are the only types where an empty list is a legitimate no-op, and whether that behavior is documented per type. The notes do not confirm the answer. Unless the README explicitly documents an empty-list exception for a type, treat an empty list as a data validation issue.
- Is there a strict or lenient configuration switch for schema_org_json_ld output?
- The assessment asks whether a strict or lenient configuration switch exists, but the provided notes describe the v1.6.0 throwing behavior as unconditional. No configuration switch is documented in the supplied context. Until confirmed in the README, assume malformed payloads throw and handle validation or exceptions in the application.
- What tests should I update when upgrading mulertech/seo-bundle to v1.6.0?
- Update snapshot and structured-data assertions because a Service without a description no longer emits an empty description field. Add tests for valid and invalid payloads across blogPosting, service, breadcrumbList, and faqPage. Also test BlogPostingSeoInterface enforcement, FAQ answer HTML sanitisation, and user-controlled call sites against v1.6.0.