我的一个控制器中只有通过AJAX访问的情况,我有以下代码。
if (!$request->isXmlHttpRequest()) {
$response = new Response();
$response->setContent('AJAX requests only!');
return $response;
}
当我测试时,这给了我一个问题,因为该请求实际上并未通过AJAX进行。这样每次都会破坏我的测试。我该如何解决这个问题?
我的想法:
其他人有任何其他想法或提示,我错过了上述工作之一吗?
答案 0 :(得分:8)
当然在Icode4food案例中,使用Matt的解决方案更好,但这里是如何找到当前环境:
$this->container->getParameter(‘kernel.environment’)
答案 1 :(得分:5)
查看课程isXmlHttpRequest
中Request
的代码和课程getHeaders
中的方法ServerBag
,下面的代码应该可以解决问题:
$client->request(
'GET',
'/path/to/test',
array(),
array(),
array(
'HTTP_X-Requested-With' => 'XMLHttpRequest',
)
);
我没有亲自测试,但我认为它应该有效。 Request
下面的代码行用于检查http请求是否为XmlHttpRequest
。
return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');
在代码中,$this->headers
使用:
$this->headers = new HeaderBag($this->server->getHeaders());
方法getHeaders
创建一个标头数组。每个以HTTP_
开头的服务器变量,加上一些特殊的服务器变量,如CONTENT_TYPE
,都放在这个数组中。
希望这有帮助。
的问候,
马特