PHP Cake 1.1 düzenli bir denetleyici bir eklenti modeli nasıl erişilir

3 Cevap php

Umarım basit bir soru: Ben tablolar seti (kb_items, kb_item_tags, vb) kullanan bir eklenti var. ve ben bu nedenle, başka bir kontrolör (diyelim ki, benim Sayfalar kontrolör) bu modelleri erişebilir olmak istiyorum:

class PagesController extends AppController{

function knowledgebase(){
  $items = $this->KbItem->findAll(...);
}

}

Kuşkusuz (bilgi tabanı eklentisi içinde bu kontrolör koyarak değil) kurallarını biraz kırma, ancak bu durumda bilgi tabanı eklenti kod tabanının bir parçası olması gerekmez onun bir özel sayfa. Ediyorum

Eğer daha fazla bilgiye ihtiyacınız olursa lütfen bana bildirin. Herhangi bir yardım için şimdiden teşekkür ederiz!

3 Cevap

Ben sadece kendimi bu yapmak zorunda, ve 'kullanan' dizisindeki model adını koyarak çalışır. Eğer birden fazla denetleyici eylemleri modeli erişmek için ihtiyacınız yoksa, siz de sadece ihtiyacınız eylemlere erişmek için loadModel () kullanabilirsiniz. Örneğin, yalnızca görünümü verilen bir denetleyicisi () eylem Bu modeli erişmek gerekir diyelim:

function view() {
  // load the model, making sure to add the plug-in name before the model name
  // I'm presuming here that the model name is just 'Item', and your plug-in is called 'Kb'
  $this->loadModel('Kb.Item');

  // now we can use the model like we normally would, just calling it 'Item'
  $results = $this->Item->find('all');
  }

Umut olur.

Değil emin 1.1 ama 1.2 gibi çalışır + Eğer eklenti adı ve kontrolörün kullandığı dizideki bir döneme modeli adı öneki varsa:

class PagesController extends AppController
{
    var $uses = array('Page','Kb.KbItem');

    function knowledgebase()
    {
         // This now works
         $items = $this->KbItem->findAll();
    }
}

Sadece denetleyicileri '$uses özellik için bir model eklemek:

class PagesController extends AppController
{
    var $uses = array('Page','KbItem');

    function knowledgebase()
    {
         // This now works
         $items = $this->KbItem->findAll();
    }
}