Bileşeni modellerini kullanarak, verileri kaydetmek için CakePHP iyi uygulama

4 Cevap php

Bir Kek bileşeni yazıyorum ve ben verilerin kaydedilmesi yerine bir denetleyicisi bunu yapmak için kullanmak mantıklı görünüyor. Kılavuzda bir bileşeni modeller kullanılarak cesareti olduğunu söylüyor, ancak bunu yapmanın başka yolu ben denetleyicisi kodunu yinelemek olurdu anlamına gelecektir.

Bileşeni, temel olarak çeşitli kaynaklardan elde edilen verilerin bir yük analizleri ve daha sonra çeşitli modelleri için veri eklemek olacaktır.

4 Cevap

Bileşeni analyses a load of data from various sources, muhtemelen bir davranış olarak yazılmış olabilir eğer.

Ve size bileşeni bir modeli kullanmak yok ama başka seçeneğim yok ise düzgün yapmak için emin olun:

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

(Örneğin Acl bileşeni olarak) çekirdek bileşenleri bunu beri ben şahsen, bu bir sorun görmüyorum. Sürece bileşeni application logic ve modelleri deðneði gibi data, sadece para cezası olacak.

Benim düşünceme göre, KURU kritik yoldur. Bu amaçla, ben iki seçenek göreceksiniz:

  1. Bunun yerine bileşeninde veri kaydetme, denetleyicisi kaydedilebilir ham formda kontrolöre geri.
  2. Devam edin ve bileşen içine modeli ithalat ve yapmanız gerekenleri yapmak. Bu teşvik değil, ama onlar oldukça kolay yapabilirim.

Zor bir seçim aşağı gelirse, benim uygulama kuru tutmak yerine sıkı bir MVC disiplini korumanın tarafında err ediyorum.

One bir bileşeni oluşturulan veri yazmak ve dağıtımı için bileşen yukarı paketlemek için yeteneğine sahip olmak istiyorsanız (modeli bileşenin parçası özellikle eğer) bu bileşenin bir model yüklemek mantıklı olacağını söyleyebiliriz.

Örneğin ben bir authorize.net AIM (kredi kartı yetkilendirme) bileşeni var.

From my controller I call the components charge function. Authorize.net sends me a response (within the component) and according to DRY I would want to save the data within the component so I don't have to repeat saving the data from wherever the charge function is called.

Uzak kongre ayrılmanın başka artı app bir model olması gerekir bileşeni içinde bir modeli kullanmak ve olamayacağını gerçeği olacaktır.

Sen ne düşünüyorsun?

Cake sürümleri ile I (1.3, 2.0) ile tanıdık, başka denetleyicisi requestAction yapabilirsiniz. Bu görünüşte de kötü bir uygulama olduğunu, ancak bilinen nedenlerle fonksiyonu sağlamak. Bazı durumlarda bu kullanmış ama geri ve ileri veri aktarmak için çalışırken ben kabataslak sonuçları olmuştur. Ben basit işlevleri dışında da bu yöntemi kullanarak önleyeceğini.