3

Fooコンポーネントがあり、コントローラーがなく、いくつかの結合されたモデルを持つという名前の CakePHP プラグインがあります。次のように構成されています。

/Plugin/Foo/Model/
 -FooModel1.php
 -FooModel2.php
 -FooModel3.php
 -FooModel4.php

標準 (非プラグイン) コードに接続するために、プラグイン モデルの 1 つが条件付きで と呼ばれる標準モデルに関連付けられBarます。これが問題に関連しているとは思いませんが、徹底したいと思います。

では、いくつかの層の深さFooControllerを利用します。Containable

$params = array(
  'conditions' => array('Bar.id' => $bar_id),
  'contain' => array(
    'FooModel1' => array(
      'FooModel2' => array(
        'FooModel3' => array('Something', 'FooModel4')
      ),
    ),
  ),
);

これにより、次のようなエラーが発生します。

Warning: Model "FooModel2" is not associated with model "FooModel3" [CORE\Cake\Model\Behavior\ContainableBehavior.php, line 339]

したがって、私のプラグイン コントローラーには、プラグイン モデルを含める必要があります。モデルの前に Foo (例​​: Foo.FooModel1)を付けてみましContainableたが、Foo という名前のモデルを取得しようとしているようです。プラグイン モデルの配列で と の両方を$hasAndBelongsToMany試しましたが、どちらも機能しません。この関連付けを正しく設定するにはどうすればよいですか?'Model1' => array()'Foo.Model1' => array()

補足: モデルをプラグインから標準/Model/ディレクトリに移動すると、すべて正常に動作します。この問題は、コード自体のロジックではなく、誤った関連付けに起因しているようです。

助けてくれてありがとう。

4

1 に答える 1

3

モデルで関連付けを設定するときは、必ずプラグイン モデルにプラグイン名のプレフィックスを付けてください...そうしないと、cake がオンザフライで生成します...そしてプラグインでファイルを使用しません...

于 2012-08-15T23:25:01.213 に答える