Name: LiipMultiplexBundle
Owner: Liip
Description: [DEPRECATED] Symfony2 controller that allows calling multiple URL's in one request as well as JSON-ifying any controller
Created: 2010-10-28 07:37:45.0
Updated: 2017-12-05 09:28:14.0
Pushed: 2017-12-05 09:28:02.0
Homepage: http://liip.ch
Size: 84
Language: PHP
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This bundle is no longer maintained. Feel free to fork it if needed.
This Bundles enables “multiplexing” multiple requests into a single Request/Response:
for example this request:
http://foo.com/multiplex.json?requests[login][uri]=/session/new&requests[notification][uri]=/notifications&requests[notification][method]=get&requests[notification][parameters][]=broadcasts&requests[notification][parameters][]=personal
will internally call:
/session/new
and /notifications
and return one Response:
"/session/new" : {"request" : "/session/new", "status": 200, "response": "the Response Content of /session/new"},
"/notifications" : {"request" : "/notifications", "status": 403, "response": "Forbidden"}
Attention: Installing this Bundle basically lets anyone side step the security firewall. Therefore its important to either secure the multiplex route or to implement security checks inside all relevant controllers
Add this bundle to your project with Composer:
p composer.phar require liip/multiplex-bundle
Add this bundle to your application's kernel:
app/AppKernel.php
blic function registerBundles()
return array(
// ...
new Liip\MultiplexBundle\LiipMultiplexBundle(),
// ...
);
The following Configuration Options exists:
allow_externals
: if enabled also external urls can be multiplexed (default: true)display_errors
: if enabled and an error occured, the error message will be returned, otherwise (if available) the http status code message (default: true)route_option
: only used in combination with restrict_routes
, defines the route option which should be looked up if restrict_routes
is on (default: multiplex_expose)restrict_routes
: if enabled only routes with the route_option
are multiplexable (default: false)here the default config
_multiplex:
allow_externals: true
display_errors: true
route_option: 'multiplex_expose'
restrict_routes: false
if you want to restrict multiplexing to specific routes, define the option in each route you want to expose
te id="_my_route" pattern="/foo/bar">
<default key="_controller">MyBundle:Controller:index</default>
<option key="multiplex_expose">true</option>
ute>
and don't forget to set restrict_routes
to true
!
This Bundles provides a decent Javascript Library to use the Multiplexer Endpoint.
javascripts
LiipMultiplexBundle/Resources/public/js/ajax_multiplexer.js"
output='js/multiplexer.js'
<script src="{{ asset_url }}"></script>
endjavascripts %}
Multiplexer
nfiguring the Multiplexer
iplexer.setEndpoint('/path/to/multiplexer/endpoint'); //as in your routing defaults to /multiplex.json
iplexer.setFormat('json'); //only useful exchange format
ding Requests to the Multiplexer
iplexer.add(
{'uri' : '/foo/bar', 'method' : 'GET', 'parameters' : {'foo':'bar'}}, //the Request Object
function(content) { /* ... */}, // the Success Callback
function(content) { /* ... */} // the Error Callback
iplexer.add(
{'uri' : 'http://google.com', 'method' : 'GET', 'parameters' : {'q':'Symfony2'}},
function(content) { /* this callback is called on success for this request*/},
function(content) { /* this callback is called on error for this request*/}
shing all Requests to the Server
iplexer.call(
function(r){ /* ... */ }, //the global success callback (optional)
function(r){ /* ... */ } //the global error callback (optional)
shing only a set of Requests to the Server
iplexer.call(['/foo/bar']);
To run the unit tests, require all dependencies
p composer.phar update --dev
Run PHPUnit
punit
See Travis for automated Tests
https://travis-ci.org/liip/LiipMultiplexBundle