1

CakePHP 2.3 アプリでいくつかの REST API エンドポイントをセットアップしようとしています。jsonを出力するいくつかの方法を使用してみました。ブラウザーで URL をヒットすると機能しますが、EmberJS RestAdapter による呼び出しは失敗し、空の応答本文で応答します。これが私の現在のコントローラーです。

App::uses('Controller', 'Controller');
App::uses('AppController', 'Controller');

class VcrAppController extends AppController {
    public $viewClass = 'Json';


}


App::uses('VcrAppController', 'Vcr.Controller');

class DestinationsController extends VcrAppController
{
    public $uses = array('Vcr.Destination');

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('index');
        $this->Auth->allow('view');
    }

    public function index()
    {
        $destinations = $this->Destination->find('all');

        $this->set(array(
            'destinations' => $destinations,
            '_serialize' => array('destinations')
        ));

    }

    public function view($destination_id)
    {
        $destination = $this->Destination->findById($destination_id);
        $this->set(array(
            'destination' => $destination,
            '_serialize' => array('destination')
        ));
    }
}

これはリクエストハンドラーと関係があると思われます。mapresources や parseextensions など、いくつかの異なる実装を試し、emberjs を変更して .json を URL に追加しました。ここからどこへ行くべきかよくわかりません。

4

2 に答える 2

0

RequestHandler コンポーネントを使用していますか? AppControllerで?貼り付けた両方のコントローラーには表示されません。

http://book.cakephp.org/2.0/en/development/rest.htmlを確認しましたか?

また、ログフォルダを確認しましたか? デバッグは 2 に設定されていますか?

于 2013-06-09T20:53:32.210 に答える
0

私はこの正確な問題を抱えていました。つまり、クライアントの Ember JS と CakePHP サーバーは別のドメインにありました (たとえば、クライアントはローカルで、サーバーは既にホストされていました)。

修正はこれを追加することです:

$this->response->header('Access-Control-Allow-Origin', '*');

API にアクセスするコントローラー アクションに。これをアプリ全体のデフォルトにするより良い方法があるかもしれませんが、私はまだ知りません。お役に立てれば。

編集: * は、任意のドメインが API 呼び出しにアクセスできることを意味することに注意してください。これは必要なことかもしれませんが、そうでない場合は、代わりに許可するドメインを指定するだけです

于 2013-08-14T18:39:24.580 に答える