CakePHP Kontrolör etkileşim soru

4 Cevap php

I have two separate controller, view, database combos: Users and Jobs. Users contains: id, name, jobid. Jobs contains: id, name, wage.

Benim kullanıcı kapta, ben kullanıcı görünümüne göndermek için benim işim isim ve ücret almak istiyor. Ben burada en iyi uygulamaları ne olduğunu bilmek istedim. Ben iki yöntemi denedim:

1.) $this->requestAction('/Jobs/getArray', array('pass' => user['jobid'])); I heard this is not the best practice, especially if you have a lot of interaction between controllers, which I probably will. It is also a pain to try and do all of the sending and receiving this way.

2.) App::import the jobs Connector. $Jobs = new JobsConnector. $Jobs->getArray($user['jobid']); Any time I try to do this, I get undefined errors. JobConnector::Job does not exist. I then get an error on the find() method, which otherwise is working.

Ben her iki yöntem bulmaya çalışıyorum saat geçirdim ve saçımı çekerek edilmiştir. Çünkü bu sınıf etkileşimler ne kadar bir pide geri benim kendi kişisel sınıf etkileşimi gitme üzereyim.

Birisi, yardım lütfen!

4 Cevap

Yerine istek eylemlerin tablo ilişkileri ile bunu denediniz mi? Size app boyunca başvuru modeli bir model ilgili verileri olsun bu şekilde.

Ben size iki model arasındaki KURUMLARINA SAHİP DEĞİL için iyi bir nedeniniz var varsayarak cevap verecektir. Ilişkilendirmek için bir neden var ise önceki cevapların bazıları gerçekten doğru.

Eğer geçerli bir ilişki yoktur ve herhangi bir şekilde modelleri katılmak istemiyorsanız o requestAction yoluyla getiriliyor kesinlikle doğru bir çözümdür.

"Resuable requestAction ile elemanları" ve size elemanları kendi veri almak ve buna göre kendi verileri önbelleğe için nasıl bir fırın makale alacak için Google.

Mark Hikayesi sürece bunu kötüye yok gibi performans sorunları ve bir yazı yaptım ve mantıksal performans isabet önemsiz önbelleğe.

3 - loadModel

Model kontrol zaten kullanımda değilse - loadModel kullanılabilir hale getirmek için kullanılabilir:

class FoosController extends AppController {

    function foo() {
        ...

        if (!isset($this->Job)) {
            $this->loadModel('Job');
        }
        $array = $this->Job->getArray();

        ...
    }

Selino ne söylediğini genişletmek için, dernekler yapılandırılmış var mı? Belki a User arasına $hasOne = array( 'Job' )? Eğer öyleyse, o zaman UsersController Eğer $this->User->Job->find( ... ) gibi Job modeli erişebilirsiniz içinde.

Çıkış the associations documentation. Orada bazı iyi örnekleri vardır.