- Can I install ghua/ext-direct-bundle in a Laravel application with Composer?
- No. It is a Symfony2 bundle, not a Laravel package, and its symfony/* version constraints conflict with the Symfony 6/7 components that Laravel 9 and later pull in, so composer require will fail dependency resolution. The only realistic use is reading the source as a reference implementation of the Ext.Direct protocol.
- Does ghua/ext-direct-bundle support Laravel 9, 10, or 11?
- There is no Laravel version support at all. The bundle targets Symfony 2.x, which is end of life and receives no security patches. Its Bundle class, DI container extension, compiler passes, routing loader, and HttpKernel event subscribers have no Laravel analogues, and none of that glue is reusable inside a service provider.
- What is Ext.Direct and how does this bundle expose Symfony controllers to an Ext JS front end?
- Ext.Direct is a remoting protocol where an Ext JS client posts a JSON envelope containing tid, action, method, type, and data, and the server dispatches that to a registered PHP callable and returns a matching response envelope. This bundle generates the provider descriptor Ext JS needs and wires incoming calls to Symfony controllers and services. The portable parts are the descriptor generation, request envelope parsing, batch response assembly, form-post handling via extAction, extMethod, extTID and extType, and the exception envelope. Everything framework-bound should be discarded.
- Is ghua/ext-direct-bundle still maintained, and is it safe to use in production?
- It is archived with roughly 15 stars, zero dependents, and no maintainer, so there is no security patching, no issue triage, and no releases. The code is PHP 5.4/7.0-era and has no modern static analysis coverage. Do not ship it as a production dependency; read it as a specification instead.
- How do I implement Ext.Direct RPC in Laravel without this bundle?
- Build a small first-party Laravel package: a route group for the descriptor endpoint and the router endpoint, a controller, an explicit method registry populated by PHP 8 attributes, and a response builder that emits the exact Ext.Direct envelope. Reuse the bundle's descriptor-generation shape and error taxonomy, and discard all of the Symfony glue. Expect roughly two to four weeks for one competent PHP engineer plus a conformance test suite.
- What security risks come with exposing controllers as Ext.Direct API methods?
- Ext.Direct is remote method invocation by design: the client names an action and method and the server dispatches it, so an inferred registry means an arbitrary-method invocation surface reachable from a JSON endpoint. The bundle also serializes exception messages and stack traces into the error envelope, and it has no built-in per-method authorization and no CSRF story for its single-endpoint POST model. Batched requests amplify one HTTP call into many dispatches. The mitigation is an explicit allow-list plus per-method authorization in your own implementation.
- How does Ext.Direct handle batched requests and form posts, and how do I replicate that in Laravel?
- A batch request is one HTTP POST whose body is an array of call envelopes, and the response is a corresponding array of result or exception envelopes in the same order. Form posts use extAction, extMethod, extTID, and extType set to form instead of a JSON body, and PollingProvider has its own event semantics. Replicate both shapes in your Laravel router and verify them against request and response fixtures captured from production.
- Can I keep an existing Ext JS front end working while migrating off Symfony to Laravel?
- Yes, using a strangler pattern applied per action. Inventory every exposed action and method from the Symfony2 bundle's configuration, annotations, and tagged services, write the contract down, and capture live request and response fixtures from production as your conformance corpus. Stand up the Laravel router behind the same paths with the registry limited to the migrated subset, and return an exception-type envelope for anything not yet ported. A reverse proxy that routes by action prefix makes cutover per-action and reversible, and the Symfony service retires by attrition.
- Does the bundle's annotation-based API discovery map to Laravel route or attribute discovery?
- No. The bundle discovers APIs through Doctrine annotation readers and Symfony container tagging with compiler passes, while Laravel core has no Doctrine annotation reader and its route registrars do not map one-to-one. The portable analogue is explicit PHP 8 attributes that populate your own method registry, with the wire contract left unchanged.
- What are the alternatives to ghua/ext-direct-bundle for Laravel developers?
- There is no maintained Laravel Ext.Direct package, so the realistic options are reimplementing the protocol yourself in a few hundred lines, replacing the transport with REST or JSON:API if you own the front end, or keeping the existing Symfony2 service running while you migrate one action at a time. Note that the wire format is versioned by Ext JS release rather than by this bundle, and it is stable across Ext JS 4 through 6.