CakePHP denetleyicileri dışında bileşenleri kullanılarak

3 Cevap php

Kullanmak mümkün mü yerleşik CakePHP bileşenlerin (örneğin: EmailComponent) bağımsız sınıflar gibi?

Bu muhtemelen bir tasarım kusur gösterir biliyorum, ve ben bunu Kek yolu falan yapmıyorum, ama herhangi Model / Kontrolör bağlı olmayan bir sınıf var ve ben bu e-postalar göndermek mümkün olmak istiyorum. O $this->Controller ki, bu durumda tabii ki null bilgileri okumak için çalışır çünkü EmailComponent İthalat, çalışmıyor.

Herhangi bir öneriniz?

3 Cevap

App::import('Core', 'Controller');
App::import('Component', 'Email');
$this->Controller =& new Controller();
$this->Email =& new EmailComponent(null);
$this->Email->initialize($this->Controller);

EmailComponent in a (cake) Shell, sizin için çalışması gerektiğini 11 comment bakın.

Kullanmayı deneyin App::import.

App::import('Component', 'Email');
$email = new EmailComponent();

Ben normalde denetleyicisi için bir referans bekliyor olabilir düşünüyorum beri yapıcı bir parametre olarak null geçmesi gerekebilir unutmayın. Bu olsa, etrafında oynamak gerekecek EmailComponent bulma düzenleri ve görünümleri açısından sorunlara neden olabilir.

Bu ağrı çok fazla değilse ben, bunu yapmak için pasta yol bileşeni bir satıcı yapmak eminim. Sonra kod temeli her yerde erişilebilir olacaktır. Siz beforeFilter bu kodu kullanmak ve sadece denetleyici bir bileşen gibi kullanabilirsiniz.

App::import('Vendor', 'EmailVendor');
$this->EmailVendor = new EmailVendor($this);