CodeIgniter global değişken

4 Cevap php

I $data tüm görünümlerde $this->load->view('my_view', $data); kullanıyorum

Ben de bu kılavuzu takip bir Denetleyicisi autoLoad var Extending Core Controller

views olarak projenin tamamı için sabittir ve özdevinimli denetleyicisi db ile getirilen bilgi görüntüleyen bir kenar çubuğu var çünkü ama ben $ veri küresel yapmak istiyorum

Şu anda elle her biri için $ veri ['yapılacaklar'] yazmak ve özdevinimli den bilgi almak zorunda model.

Teşekkür ederiz.

4 Cevap

1: MY_Controller in application/libraries aşağıdaki ile oluşturun:

class MY_Controller extends Controller {  
  var $data;      
  //constructor function              
}

2: Controller MY_Controller tüm controller dosyaları için değiştirin ve $this->data ile görünümleri yük

class Contact extends Controller { //to.. } 

class Contact extends MY_Controller { 
 $this->load->view('contact_view', $this->data);
}

Eğer yükleme ayarları gibi MY_Controller olarak tüm site için geçerli olan varsayılan işlevleri yerine bu şekilde.

Ben bugün erken benzer bir sorun koştu. Ben daha kolay bir yolu, yerine globalleri daha sabitlerini kullanmak olduğunu öğrendim. Eğer index.php dosyasından yükleyecek bir sabitler dosyası tanımlayabilirsiniz:

// Include additional constants
$defines_file = 'includes/defines.php';
if (file_exists($defines_file))
{
    require_once($defines_file);
} 

Sonra defines.php dosyasına sabitler ekleyebilirsiniz:

define(MY_CONSTANT,'my constant info');

Bu şekilde, ya doğrudan sistemi boyunca herhangi bir dosyanın mevcut olacaktır: echo MY_CONSTANT; veya değişkenlere atayabilirsiniz.

Ben sadece ben sabitlerini değiştirmek gerekirse ne zaman / gitmek için 1 konuma sahip olurdu bu yol benim için daha kolay olurdu karar verdi.

Daha fazla: http://codeigniter.com/forums/viewthread/56981/#280205

Ben küresel bir işlevi çağırmak için bir yardımcı işlev kullanılır!

örn.

function get_user($userid){
    $CI =& get_instance();

    $query = $CI->db->get_where('users', array('id' => $userid), 1, 0);
    foreach ($query->result() as $row){
        // Return a object with userdata!
        return $row;
    }
}

Şimdi ben her yerde benim userdata erişebilirsiniz ..

Aksine görünümü veri küresel yapmak yerine, ben bu kenar çubuğu görünümü üretmek için bir modül oluşturmak için HMVC kullanmanızı tavsiye ediyorum. HMVC kısmi manzarasına kodlama temiz güzel bir yoludur.