Is it possible to restrict a route for AJAX only?
I know this question is a bit older but meanwhile a new way to achieve this was introduced in Symfony 2.4.
Matching Expressions
For an ajax restriction it would look like this:
contact:
path: /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
condition: "request.isXmlHttpRequest()"
Also possible in Annotation:
/**
* ContactAction
*
* @Route("/contact", name="contact", condition="request.isXmlHttpRequest()")
*/
My advice would be to define your own router service instead of default, which would extend from Symfony\Bundle\FrameworkBundle\Routing\Router
, and redefine method resolveParameters() with implementing your own logic for handling additional requirements.
And then, you could do something like this in your routing:
your_route:
pattern: /somepattern
defaults: { somedefaults }
requirements:
_request_type: some_requirement