-1

CakePHP アプリケーションを から にアップグレードしようとしてい1.3.6ます2.2.4

公式の CakePHP アップグレード ドキュメントに基づいて、すべてのアップグレード手順を実行しました。

しかし、私はこのエラーに苦労しています:

クラス 'Content' が C:\wamp\www\cakephp-2.2.4\app\Controller\Component\OrderBaseComponent.php 行 20 に見つかりません

Component::__construct() に渡される引数 1 は、C:\wamp\www\cakephp-2.2.4\app\Controller\Component\OrderBaseComponent.php の 17 行目で呼び出され、[ CORE\Cake\Controller\Component.php、77行目]

4

2 に答える 2

0

最初のエラーについては、コードで使用するすべてのクラスを常にApp :: used()にするようにしてください。したがって、実際に使用する前に、コンテンツ(クラスが何であれ)も含める必要があります。

それがモデルである場合にのみ使用できます。それ以外の場合は、ファイルの先頭にClassRegistry::init()sthを配置 します。App::uses('Content', '[TYPE]');

この2番目のエラーはかなり自明です!アウトライン化された「CORE\Cake \ Controller \ Component.php」ファイルを調べて、関数がカスタムコンポーネントでまったく同じ引数を持っていることを確認します。

public function __construct(ComponentCollection $collection, $settings = array()) {
    //...
}
于 2013-01-13T12:30:27.867 に答える
-1

関連するソース コードはありませんが、通常、これをコンポーネント ファイルの先頭またはコンポーネント ファイルに追加します。

初め:

 App::uses('Content', 'Model');

また、init または construct メソッドに次のようなものを追加する必要がある場合があります。

$this->Content = ClassRegistry::init('Content');

これにより、最初の問題が解決されるか、何がうまくいかないかについて明確な説明が得られるはずです。実際、このコードはすでに正しく独立した機能ではなかった可能性があります。

モデルが別のコードに既にロードされていることに依存していると思われるため、おそらく機能しました。コンポーネントは他のコードに依存せずに機能する必要があるため、App::uses、App::import などのステートメントを追加すると、コードが常に機能します。たとえば、他のプロジェクトで再利用する場合などです。

2番:

2 番目の問題は、実際には移行の問題です。モデルが最初に Component クラスを拡張していることを確認してください。

次に、カスタムメソッド __construct() だけでなく init() も実装する場合は、親への呼び出しを追加する必要があるかどうかを確認してください。たとえば、これは beforeFilter コントローラ メソッドに適用されます。

public function beforeFilter() {
    parent::beforeFilter();
}

ドキュメントとコード例: http://book.cakephp.org/2.0/en/controllers.html#the-app-controller

関連するドキュメント: http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html#components

于 2013-01-13T11:33:58.637 に答える