Bir öğeden Access Controller veri

4 Cevap php

Benim düzenleri / default.ctp dosyadan çağrılan benim yan bar navigasyon için bir eleman var, benim Fotoğraflar kumandadan kategoriler hakkında bazı verilere erişmek gerekir. Bunu nasıl yapıyor hakkında gitmek istiyorsunuz?

4 Cevap

Sadece normal bir şablon olarak layous / default.ctp görüyor ve koyabilirsiniz

<?php echo $this->element('your element'); ?>

nereye ihtiyaç.

b.t.w, kullanın:

$data = $this->requestAction('controller/action');

verilere erişmek için

Eğer yepyeni bir istek döngüden onu aramak her zaman başlar gibi gerçekten uygulama yavaşlatabilir önbelleğe etkin kullanımını sağlamak sürece requestAction dikkatli olun.

Travis leleu cevabı şeyler yapmanın standart bir yolu olacaktır. Eğer elemana (taşınabilirlik ya da herhangi bir nedenle) verileri almak gerekiyorsa, o zaman requestAction gitmek için yol değildir.

Eğer denetleyici olmalıdır herhangi bir iş mantığı performans gibi Ben kuvvetle senin elemanın içine bir singleton olarak modeli sınıfını içe ve örneğini öneririz. Sen ClassRegistry :: init () kullanarak bunu yapabilirsiniz;

$Photo = ClassRegistry::init('Photo');
$Photo->find('all');

Eğer veri herhangi ek bir işlem yapmanız gerekiyorsa model kendisi Pastalar afterFind geri arama kullanarak veya Fotoğraf modelinde özel bir yöntem haline ya o yapmalıdır:

class Photo extends AppModel {

    function customFind () {
        $photos = $this->find('all');
        foreach ($photos as $photo) {
            //processing code here...
        }
    }

}

Sonra eleman onu çağırır:

$Photo = ClassRegistry::init('Photo');
$Photo->customFind();

Eğer yönlendirmeleri veya bileşenlerini kullanarak gibi şeyler yapmak gerekiyor temelde nerede ne ben burada kızdırmak için çalışıyorum requestAction uygun olan tek durum olduğunu.

Eğer sadece bir alma ve / veya verilerin manipüle edilmesi ise, o zaman modelde aittir.

Eğer eleman veri gönderebilirsiniz. Lütfen default.ctp Örneğin:

<?php echo $this->element('side_nav', $your_data); ?>

ve side_nav.ctp size bu verileri işleyebilir.

Neden sadece bunun için standart Kek kongre yapmazdı?

Denetleyicisi,

$ This-> set ('kategoriler', $ this-> Fotoğraflar-> find (...));