コンポーネントの問題は、カスタムAppControllerクラスの拡張に問題が発生します
-
21-12-2019 - |
質問
私はこのような私のCakePHPアプリにカスタム構造を持っています:
class AppController extends Controller // default
class ExtendedAppController extends AppController
class ChildController extends ExtendedAppController
.
childcontroller クラスのコンポーネントを宣言すると、 ExtendedAppController に宣言するコンポーネントが消去されます。私はヘルパーについてもこの同じ問題を抱えていると思います。これを避けるために配列をマージするにはどうすればよいですか?
解決
ケーキは、コア$_mergeParent = 'AppController';
クラスの変数Controller
に設定されている 1 親クラスだけで現在のコントローラの変数をマージします。
この変数を定義することで、この変数をChildControllerで上書きすることができます。
class ChildController extends ExtendedAppController {
protected $_mergeParent = 'ExtendedAppController';
}
.
しかし、これはAppControllerで定義されているすべてのヘルパーとコンポーネントを無視しているので、コンポーネントとヘルパーをAppControllerからExtendedAppControllerにコピーします。これはあなたの質問に答えるべきです私はあなたがあなたのChildControllerからExtendedAppControllerのコンポーネントを使用できるようになると思います。
Controller :: _MergeControlLervars()メソッドがコアに書き込まれる方法です。これは正確に本:< / P>
HTMLHelper、FormHelper、およびSessionHelperは、 Default、SessionComponentのようにデフォルトです。 しかしあなたがあなたを定義することを選択した場合 AppControllerの$ Helpers Arrayを使用して、必ずHTMLHelperを含めてください。 あなたがあなたのデフォルトでまだ利用できるようにしたい場合 コントローラ