-1

EXTJS 4 レスト プロキシから Zend 2 レストフル コントローラーにデータを投稿したいと考えています。しかし、firebug で検査すると、投稿データがあることがわかりましたが、そのデータを取得できません。その投稿データを取得してメソッドで使用する方法。私が間違っているところは、私はそれを理解することはできません。残りのExtjs 4プロキシメソッドからZendにデータを投稿する手順を持っている人はいますか?

4

3 に答える 3

0

PHP で HTTP リクエスト本文から JSON をロードする標準的な方法は、

$some_json = file_get_contents('php://input');
$some_object = json_decode($some_json);

Zend2 に独自の方法があるかどうかはわかりません。

于 2013-01-20T20:06:46.307 に答える
-1

私はまったく同じ問題を抱えています。さて、以前の応答が機能しない理由は、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 変数を使用して通常どおりコードを記述します。

于 2013-03-10T06:05:00.080 に答える