別のコントローラーのモデルにアクセスするには、現在$this->loadModel('Setting')
、クラス内でコマンドを使用しています。常に使用する必要なく、モデルの「設定」に他のクラスからアクセスできるようにしたいのですが$this->loadModel('Setting')
、どうすればよいですか?
1 に答える
デフォルトでは、CakePHP はコントローラ名に「適合する」モデルを自動的にロードします (たとえば、Post
モデルは に対して自動的にロードされますPostsController
)。
つまり、ロードするモデルを指定しなかった場合です。
コントローラーにロードするモデルを手動で指定する
CakePHP のほとんどのものと同様に、「自動」設定を手動で上書きすることでこれを上書きできます。$uses
プロパティを介してコントローラーで使用するモデルを指定できます。
public $uses = array(
'ModelA',
'ModelB',
);
これにより、「ModelA」と「ModelB」がコントローラーにロードされ、コントローラー経由$this->ModelA
および$this->ModelB
コントローラー内でアクセス可能になります。
$uses
Controller のプロパティは AppModel のプロパティとマージされるため、モデルを AppController の に追加すると、 AppControllerを拡張するすべての Controllerにモデルが自動的にロードされます。$uses
Setting
$uses
ドキュメントを読む:アプリ コントローラー
モデルへのアドホック アクセス
プロジェクト内の任意の場所でモデルにアクセスする必要があるが、主に特定の条件または特定のアクション内でのみアクセスする必要がある場合は、ClassRegistry
;を介してモデルを開始できます。
例えば;
$ModelA = ClassRegistry::init('ModelA');
または、モデルからのデータが必要なだけで、その後は必要ない場合。
$projects = ClassRegistry::init('Project')->find('list');