EXTJS 4 レスト プロキシから Zend 2 レストフル コントローラーにデータを投稿したいと考えています。しかし、firebug で検査すると、投稿データがあることがわかりましたが、そのデータを取得できません。その投稿データを取得してメソッドで使用する方法。私が間違っているところは、私はそれを理解することはできません。残りのExtjs 4プロキシメソッドからZendにデータを投稿する手順を持っている人はいますか?
3 に答える
PHP で HTTP リクエスト本文から JSON をロードする標準的な方法は、
$some_json = file_get_contents('php://input');
$some_object = json_decode($some_json);
Zend2 に独自の方法があるかどうかはわかりません。
私はまったく同じ問題を抱えています。さて、以前の応答が機能しない理由は、Zend Studio 10 に、パラメーターを受け取ってルートを作成するビジュアル エディターから REST サービスを構成するための新しい機能があるためです。このサービス デザイナーは実際には、Restful サービスの POST アクションの本体からパラメーターを受け入れていますが、ExtJS から送信された JSON をなぜか無視しています。さらに悪いことに、Zend Studio 10 の統合 GUI を使用してサービスをテストすると、サービスは完全に機能し、生成された JSON は ExtJS のものと 100% 同じです (私は実際にその点に到達するためにいくつかのデータ変換を実行しました)。うまくいきません。
本当の問題は、開発者からこの JSon をデシリアライズするためのコードを抽象化するフレームワーク自体から期待される JSON とは異なる、ExtJS リクエスト内の POST メソッド内に「何か」があることです。
本当の問題は、ExtJS が POST 本文で別の方法で送信することを期待している Zend Server Gateway ライブラリは何ですか? ここにいる何千人もの専門家のいずれかがそれをチェックして、正しい答えを出してくれれば、非常にありがたい. これに答える人は、Zend Studio 10 の試用版を持っているかダウンロードして、ZS10 に付属の Visual Service Tool がどのように機能するかを自分で確認する必要があります。これまでのところ、ExtJS4 は次のような JSON を生成することがわかりました。
{"data":
{"IdCurso":"0","Nombre":"NodeJS","IdEstadoCurso":"1",
"IdTipoPeriodo":"1","CantPeriodo":"1","CantAsignatura":"1","IdPlantel":"1"}
}
そして、サービスをテストするための Zend GUI は、次のような JSON を生成します (そしてサービスは受け入れます)。
{
'data' : '{"Nombre":"NodeJS","IdEstadoCurso":"1","IdTipoPeriodo":"1","CantPeriodo":"1","CantAsignatura":"1","IdPlantel":"1","IdCurso":"0"}'
}
ご覧のとおり、データは一重引用符で囲まれており、その内容も Zend Framework が問題なく使用できます。ExtJS は二重引用符を使用し、データ パッケージ自体の内容を引用していません。
これは実際に機能するパッチです。決定的な解決策ではありません。誰かがより良い解決策を見つけたら、それは素晴らしいことです。
add() (POST) メソッドの最初の命令としてこれを試してください。
$data = json_decode($this->getRequest()->getContent());
次のことを追加する必要がある場合があります。
$data = (array) $data;
その後、パラメータが実際に機能する場合と同様に、$data 変数を使用して通常どおりコードを記述します。