- Does markup/contentful-bundle work with Laravel?
- No. It is a Symfony bundle, not a Laravel package. It ships a Symfony Bundle subclass, a DependencyInjection Extension with a Configuration tree, and services wired through Symfony's container; Laravel's container does not load or understand any of that, and there is no service provider, facade, or publishable config.
- How do I install markup/contentful-bundle in a Laravel application?
- You effectively cannot. Composer will almost certainly refuse to resolve it against a modern Laravel app because of 2016-era constraints around PHP ^5.5|^7.0, Symfony ^2.8|^3.0, and Guzzle 5/HTTPlug-style HTTP abstractions that collide with PSR-18. Forcing it through with --ignore-platform-reqs only leaves you with an unmaintained HTTP stack at runtime.
- Is markup/contentful-bundle still maintained?
- No. The last release was 2016-10-25, roughly a decade ago, with no PHP 8 compatibility, no security patching, no CVE monitoring, and no maintainer response. Social proof is essentially zero: 2 stars, 0 dependents, and a package score around 0.01, which means nobody has stress-tested it or filed the bugs.
- Which Laravel and PHP versions does markup/contentful-bundle support?
- None, because it does not target Laravel at all. Its platform baseline is pinned to Symfony 2.8/3.0 and PHP 5.5/7.0, so on a typical Laravel 10, 11, or 12 app running PHP 8.2+ it is both framework-incompatible and platform-incompatible.
- How do I configure Contentful credentials in a Laravel app?
- Do it natively instead of via this bundle: add a config/contentful.php file backed by .env keys such as CONTENTFUL_SPACE_ID, CONTENTFUL_ENVIRONMENT, CONTENTFUL_DELIVERY_TOKEN, and CONTENTFUL_PREVIEW_TOKEN. Then bind a singleton around the official Contentful Delivery client inside a small ContentfulServiceProvider so controllers and services receive it via dependency injection. That gives you the same configuration ergonomics the bundle offered, minus the abandoned dependency.
- What is the best alternative to markup/contentful-bundle for Laravel?
- Use the official contentful/contentful.php SDK, which is actively maintained and PHP 8 compatible, and wrap it in a thin owned adapter. Bind the client as a singleton in a service provider, inject it where needed, and keep a small repository or service layer around entry and asset queries. If you prefer to avoid a vendor SDK entirely, Contentful's GraphQL endpoint is a first-class alternative worth evaluating first.
- Does markup/contentful-bundle handle caching or webhook invalidation?
- No. It provides no caching strategy and no invalidation model, so webhook-driven purges, TTLs, and build-time static generation are all your build regardless of whether you use it. Whatever caching approach you choose in Laravel, it is work you own either way, which removes the bundle's main claimed advantage.
- Can I fork markup/contentful-bundle and reuse its code?
- Yes, legally. It is MIT licensed, so forking and owning the code is unencumbered and is one of the few genuinely favourable signals here. Practically, though, the bundle is only around 100 to 300 lines of glue over the official SDK, so reading it for five minutes and reimplementing its configuration semantics natively is usually faster and cleaner than maintaining a fork.
- How do I test a Contentful integration in Laravel?
- Since the bundle offers no testing support, bind a fake or mock implementation of your client interface in the container during tests and assert against fixture entries and assets. With the official SDK you can also fake the underlying HTTP layer or snapshot cached API responses so tests stay fast and offline. Keeping the Contentful client behind a small interface you own makes this straightforward without any third-party bundle.
- Is markup/contentful-bundle safe to use in production?
- No. The risk is abandonment rather than code style: a decade without commits means no PHP 8 support, no security patches, no CVE monitoring, an outdated HTTP client, and no one to respond to issues. For a Laravel codebase it also simply will not integrate. Treat it as a 2016 reference implementation and build a small owned adapter over the official SDK instead.