Herkes bu teşebbüs etmiştir? Bu mümkün mü, ve eğer öyleyse, ne tür sorunlar ben bunu başarmak için çalışırsanız çalıştırmak olacak?
Tabii, .. Kek kolayca alt sınıfıdır denetçileri ve sonra da genellikle denetleyicileri için zamanı mantığı eklemek için 'gibi beforeFilter', 'afterFilter', vs gibi kendi kanca işlevini kullanmak istiyorum .. ben genellikle en az 1 soyut denetleyicisi koymak kek kontrolör ve rota yapılandırmak son denetleyicisi arasında.
Eğer amaç denetleyicileri arasındaki mantığı paylaşmak için ise:
app tüm kontrolörleri ile paylaşmak için AppController için mantığı eklemek.
Bir bileşeni yapmak ve bunu paylaşmak istediğiniz denetleyicileri için $ this-> bileşenleri eklemek.
Eğer bileşenleri ve yardımcıları nasıl işleneceğini için ekstra dikkat etmeniz gerekiyor gibi denetleyicileri arasında ilave ek miras, sadece son çare olarak concidered edilmelidir. Örneğin el birleştirmek gerekir $ this-> bileşenleri ve $ This-> AppController ve sizden devralmasını denetleyicisi ile yardımcıları.
Ben AppController ve app bazı özel denetleyicileri arasında ek bir katman koyduk.
Eğer içine kaçıyorum tek sorun $ yardımcıları ve $ bileşenlerinin sınıf özellikleri birleştirilmesi olduğunu. CakePHP, sizin denetleyicileri bu değişkenlerin geçersiz not AppController tarafından belirlenen bu üzerine yazacaktır, ama onları birleştirmek olacaktır.
Bu Kontrolör taban sınıfta __ mergeVars () adında özel bir yöntemle yapılır ve ne yazık ki sadece varsayılan denetleyici yapısı için yapar edilir. Eğer denetleyicileri aşağı AppController dan $ yardımcıları ve $ denetleyicileri miras istiyorsanız ilave katman, doğru birleştirilmiş olmayacaktır.
Sen $components
ile sorunu çalıştırmak ve $helpers
özellikleri birleştirme yerine değil üzerine. Bu doğru yapmış protected $_mergeParent = 'YourParentClass'
tanımlamak için emin olun. Bunun için varsayılan değer 'AppController'
.
Source code: http://api.cakephp.org/2.4/source-class-Controller.html#294-301