0

別のコントローラーのモデルにアクセスするには、現在$this->loadModel('Setting')、クラス内でコマンドを使用しています。常に使用する必要なく、モデルの「設定」に他のクラスからアクセスできるようにしたいのですが$this->loadModel('Setting')、どうすればよいですか?

4

1 に答える 1

2

デフォルトでは、CakePHP はコントローラ名に「適合する」モデルを自動的にロードします (たとえば、Postモデルは に対して自動的にロードされますPostsController)。

つまり、ロードするモデルを指定しなかった場合です。

コントローラーにロードするモデルを手動で指定する

CakePHP のほとんどのものと同様に、「自動」設定を手動で上書きすることでこれを上書きできます。$usesプロパティを介してコントローラーで使用するモデルを指定できます。

public $uses = array(
    'ModelA',
    'ModelB',
);

これにより、「ModelA」と「ModelB」がコントローラーにロードされ、コントローラー経由$this->ModelAおよび$this->ModelBコントローラー内でアクセス可能になります。

$usesController のプロパティは AppModel のプロパティとマージされるため、モデルを AppController の に追加すると AppControllerを拡張するすべての Controllerにモデルが自動的にロードされます。$usesSetting$uses

ドキュメントを読む:アプリ コントローラー

モデルへのアドホック アクセス

プロジェクト内の任意の場所でモデルにアクセスする必要があるが、主に特定の条件または特定のアクション内でのみアクセスする必要がある場合は、ClassRegistry;を介してモデルを開始できます。

例えば;

 $ModelA = ClassRegistry::init('ModelA');

または、モデルからのデータが必要なだけで、その後は必要ない場合。

 $projects = ClassRegistry::init('Project')->find('list');
于 2013-03-28T19:34:56.337 に答える