0

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')」は、理由がわからない空の文字列を返します。

私が取り組んでいるアプリケーションでは、$_POST を使用するだけでなく、この "file_get_contents('php://input')" のように投稿データを読み取ることが重要です。

なぜこれが起こるのか、そしてそれを解決する方法を知っている人はいますか?

4

1 に答える 1