4

私のCakeアプリケーションにはいくつかのコントローラーがserversありusersます。簡単な API を作成し、 というコントローラーを作成したいと考えていますApiControllerserversこのコントローラ内でとusersモデルの両方を使用したいと考えています。

私は Cake を初めて使用しますが、一般的に MVC ではありません。私がこれまでにピックアップしたものから、Cake はコントローラーでserversモデルを自動的に使用しServersControllerますが、特定のコントローラーからモデルを明示的に使用する方法がわかりません。

また、API リクエストが HTML マークアップなしで JSON のみを提供するようにしたいと考えています。すべてのサイト ページのヘッダー/フッターを定義するデフォルト レイアウトがあり、ビューから API 関数と JSON を要求すると出力されます。レイアウトの出力を停止し、代わりにビューを提供するにはどうすればよいですか?

4

2 に答える 2

14

$usesコントローラーでプロパティを宣言する必要がありますhttp://book.cakephp.org/2.0/en/controllers.html#controller-attributesを参照してください

この$uses属性は、コントローラーで使用できるモデルを示します。

<?php
class ApisController extends AppController{
    public $uses = array(
        'User',
        'Server'
    );
}

Apisまた、コントローラー名が複数形 (またはServers) でモデル名が単数形 (Apiまたは)である Cake の命名規則に従っていないようですServer。これらの名前も CamelCase にする必要があります。詳細については、 http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.htmlを参照してください。

JSON に関しては、JSON リクエストのサーバーを支援するために使用できる Ajax レイアウトがあります。これを実現する方法の詳細については、 http://book.cakephp.org/2.0/en/views.html#layoutsを参照してください。

于 2012-07-07T22:02:43.203 に答える
2

Yottatron の答えは、Nick Savage の答えと同様に的を射ています。次のコメントで簡潔に説明されている、モデルをロードするさまざまな方法の違いを知ることが重要です: https://stackoverflow.com/a/4753244/117413

個人的に$usesは、グローバル レベルですべてのモデル オブジェクトへの参照が必要になることは非常にまれであるため、グローバル配列のオーバーロードは避けています (Cake のドキュメント ( https://book ) にあるように、オーバーロードするのは悪い習慣です)。 .cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Controllers.html#components-helpers-and-uses )

于 2012-07-08T12:01:52.340 に答える