Symfony2,检查ajax是否调用了一个动作

Clé*_*aud 27 ajax controller symfony

我需要,对于我的控制器中的每个操作,检查这些操作是否由ajax请求调用.

如果是,则不附加任何内容,如果不是,我需要重定向到主页.

我刚刚发现if($this->getRequest()->isXmlHttpRequest()),但我需要在每个动作上添加此验证.

你知道更好的方法吗?

R. *_*kan 59

这很容易!

只需将$ request变量添加到您的方法中即可.(对于每个控制器)

<?php
namespace YOUR\Bundle\Namespace

use Symfony\Component\HttpFoundation\Request;

class SliderController extends Controller
{

    public function someAction(Request $request)
    {
        if($request->isXmlHttpRequest()) {
            // Do something...
        } else {
            return $this->redirect($this->generateUrl('your_route'));
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

如果要自动执行此操作,则必须定义内核请求侦听器.


Pie*_*NAY 7

对于可重用的技术,我使用基本模板中的以下内容

{# app/Resources/views/layout.html.twig #}
{% extends app.request.xmlHttpRequest 
     ? '::ajax-layout.html.twig'
     : '::full-layout.html.twig' %}
Run Code Online (Sandbox Code Playgroud)

因此,layout.html.twig当源自Ajax时,所有扩展的模板都可以自动剥离所有标准标记.

资源