我有一个 symfony 网站,我正在尝试进行一些单元测试。我有这样的测试,我尝试提交一些东西:
<?php
namespace Acme\AcmeBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class HomeControllerTest extends WebTestCase {
public function testrandomeThings() {
$client = static::createClient();
$crawler = $client->request(
'POST',
'/',
array(
"shopNumber" => 0099,
"cardNumber" => 231,
"cardPIN" => "adasd"),
array(),
array());
}
但我不认为控制器正在接收我发送的数据:
class HomeController extends Controller
{
public function indexAction()
{
var_dump($_POST);
die;
return $this->render('AcmeBundle:Home:index.html.twig');
}
}
the var_dump
实际上返回给我一个空数组。
通过 POST 请求发送信息时缺少什么?
$_POST
是由 PHP 填充的变量,如果直接通过 http 调用,则仅从此全局变量创建 symfony 请求。 symfony 爬虫不会发出真正的请求,它会根据您提供的参数创建一个请求$client->request
并执行它。您需要通过以下方式访问这些内容Request http://api.symfony.com/master/Symfony/Component/HttpFoundation/Request.html目的。切勿使用$_POST
, $_GET
等直接。
use Symfony\Component\HttpFoundation\Request;
class HomeController extends CoralBaseController
{
public function indexAction(Request $request)
{
var_dump($request->request->all());
die;
return $this->render('CoralWalletBundle:Home:index.html.twig');
}
}
use $request->request->all()
获取数组中的所有 POST 参数。要仅获取特定参数,您可以使用$request->request->get('my_param')
。如果您需要访问 GET 参数,您可以使用$request->query->get('my_param')
,但最好设置路由模式中已有的查询参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)