Codeigniter her dil için DB farklılaştıran

3 Cevap php

Ben CodeIgniter kullanıyorum ve üzerinde çalışıyorum proje iki dilde olmalıdır.

Ben çözemiyorum tek şey bir oturum değişkeni belirli bir değere ayarlandığında CodeIgniter'daki farklı bir veritabanı seçmek için nasıl.

Örnek:

if the session variable 'language' is set to 'EN' i want it to select the DB: "databasename_EN"

in all other cases select DB: "databasename_EN"

I buldu tek şey $ this-> db-> load ('bla') yapabileceği oldu; ama bu her modelde bir DB-yük eklemek zorunda ve özdevinimli_yükle 'veritabanı' devre dışı bırakmak zorunda kalıyoruz.

Herhangi bir öneriniz?

Thx

3 Cevap

En iyi sonuç için ben denetleyen bir pre_system kanca yaratacak olmadığını bir $ _SESSION ['lang'] bir sabit set yoksa değişken var ve:

define('LANG', isset($_SESSION['lang']) ? $_SESSION['lang'] : 'EN');

Sonra veritabanı yapılandırma dosyasında bunu:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_".LANG;
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

En az yaygara ile hile yapmak gerekir.

Phil Sturgeaon cevap bir varyasyonu:


$active_group = LANG; // switch the DB based on the LANG constant

$db['EN']['hostname'] = "localhost";
$db['EN']['username'] = "root";
$db['EN']['password'] = "";
$db['EN']['database'] = "databasename_EN";
// etc

$db['FR']['hostname'] = "localhost";
$db['FR']['username'] = "root";
$db['FR']['password'] = "";
$db['FR']['database'] = "database_FR";
//etc

i bir MyModel sınıf Model uzanan ve bu jimnastik taşıma yaratabilir sanırım. Yapmanız gereken istediğiniz tüm modellerin ana sınıfı olarak MyModel kullanmak daha.