0

parseExtensionCakephp 2.3.0 で for jsonをセットアップしました。エラーは表示されません。できます?

どうすればテストできますか?

RoR では、非常に簡単にテストできます。

https://mydomain.de/view/4.json

Cakephp でどのように動作しますか?

私のView-Actionはこれです。

 public function view($id = null) {
            if (!$this->Atla->exists($id)) {
                    throw new NotFoundException(__('Invalid atla'));
            }
            $options = array('conditions' => array('Atla.' . $this->Atla->primaryKey => $id));
            $this->set('atla', $this->Atla->find('first', $options));

            $this->Atla->id = $id;
            $result = $this->Atla->read();
            $this->response->type('json');
            $this->response->body(json_encode($result));
            return $this->response;   
            $this->set(compact('atlas'));

    }

常に json-request を受け取るのはなぜですか?

4

2 に答える 2

1

_serializeキーを使用すると、 cakephpは自動的に json および xml ビューを作成できます。私は通常、次を使用して json または xml ビューを作成します。

public function view() {
  // data I want to display
  $record1 = $this->ModelName->find('first', ...);
  $this->set('record1', $record1);

  $record2 = $this->ModelName->find('first', ...);
  $this->set('record2', $record2);


  // option 1: serialize the hard way 
  $this->set('_serialize', array('record1', 'record2'));

  // option 2: serialize the easy way
  $this->set('_serialize', array_keys($this->viewVars));
}

PS: ステートメントの後のコードreturnは実行されません。

于 2013-02-09T15:05:07.147 に答える
0

ビューを作成する必要があります

app / View / Atlas / json / view.ctp

これは、.jsonリクエストに使用されているビューです。.jsonのないリクエストは、通常のビューファイルを使用します。

app/View/Atlas/view.ctp

JSONおよびXMLビューの作成/使用の詳細については、http: //book.cakephp.org/2.0/en/views/json-and-xml-views.html#using-a-data-view-with-viewを参照してください。 -ファイル

そのページから、view.ctpには次のようなものが含まれている可能性があります。

// View code - app/View/Posts/json/index.ctp
foreach ($posts as &$post) {
    unset($post['Post']['generated_html']);
}
echo json_encode(compact('posts', 'comments'));

しかし、それは本当にあなたが達成しようとしていることに依存します。JSON応答に「Atlas/view」アクションのみを使用し、HTMLをまったく使用しない場合は、コントローラー内で応答本体を生成する必要がない場合があります。MVCの規則に「一致」しているわけではありませんが、それだけでビューを作成する必要がなくなりますecho json_encode($data);;)

public function view($id)
{
    $this->MyModel->id = $id;
    $result = $this->MyModel->read();

    $this->response->type('json');
    $this->response->body(json_encode($result));

    //Return reponse object to prevent controller from trying to render a view
    return $this->response;
}

'HTML'と'JSON'の両方を使用する場合、リクエストに応じて(.json拡張子の有無にかかわらず)、2つのビューファイルが必要です。JSON用に1つ、HTML用に1つ。

// This view will be used for your JSON requests
app/View/Atlas/json/view.ctp

// This view will be used for non-JSON (html) requests:
app/View/Atlas/view.ctp

json-viewで、json_encode(.....);を使用してデータを出力します。'normal' / htmlビューでは、通常のデータを出力するだけです

コントローラで、データを通常どおりに設定します

public function view($id = null) {
        $this->Atla->id = $id;
        if (!$this->Atla->exists()) {
                throw new NotFoundException(__('Invalid atla'));
        }
        $this->set('atla', $this->Atla->read());

}
于 2013-02-09T13:37:49.103 に答える