我正在使用 Zend-Framework 和 PHP-Unit。
我的设置
我有一个html表单:
<form method="post" action="/my-module/my-controller/do">
<input type="text" name="var" value="my value" />
<input type="submit" value="sumit" />
</form>
这是等效的单元测试:
public function test_myForm ()
{
$this->request->setMethod('POST')->setPost(array(
'var' => 'my value'
));
$this->dispatch('/my-module/my-controller/do');
}
控制器动作如下所示(用于测试目的):
public function doAction ()
{
print_r($_POST);
echo "\n -------------------- \n";
print_r(file_get_contents('php://input'));
echo "\n -------------------- \n";
die;
}
结果
如果我在浏览器上提交表单,我会得到以下结果:
Array ( [var] => my value )
--------------------
var=my+value
--------------------
但如果进行单元测试,输出如下:
Array ( [var] => my value )
--------------------
--------------------
我的问题
代码“file_get_contents('php://input')”返回一个空字符串,我不知道为什么。
对于我正在处理的应用程序,重要的是读取像“file_get_contents('php://input')”这样的帖子数据,而不仅仅是使用 $_POST。
任何人都知道为什么会发生这种情况以及如何解决它?