variables globales obtenidas de base de datos

buenas a todos de nuevo!!!!!

tengo una duda y estoy madurandola a ver por donde le doy salida:

quiero crear unas variables globales (template, siteoff,directorio de apis…), todas estas variables se guardan en una db con la siguiente estructura :




tbl_vars:

|name   |varchar(15) |No|

|content|varchar(255)|No|



me gustaria poder acceder como a las variables guardadas en params

Yii::app()->params[‘xyz’] o Yii::app()->XYZ[‘varxyz’]

¿¿¿¿alguien me puede dar alguna pista???

un saludete!!!

Creo que deberias explicar mejor que es lo que estas buscando al hacer que estas variables sean accesibles globalmente.

Como lo veo yo tu ya tienes acceso a esas variables en la base de datos globalmente mediante el componente Yii::app()->db

Simplemente tienes que hacer una consulta sencilla a la base de datos cada vez que quieras obtener dichos valores.

Otra salida podria ser crear un componente que se dedique a extraer los valores de las variables almacenadas en la base de datos.

como te digo, tienes que explicar un poquito mas a detalle para tener una clara idea de por que quieres hacer eso.

Saludos

cierto, la verdad es qu mi explicacion inical es un poco escasa :rolleyes:

lo que quiero es poder cargar un array con variables de manera global, este array lo obtengo desde una consulta sql y la idea de hacerlo asi es por que solo quiero acceder una vez a la base de datos (en la primera peticion al index.php) y asi podr acceder al array desde cualquier sitio y en cualquier lugar sin tener que hacer una consulta a la db, vamos algo parecido a lo que son las variables globales de sesion, pero esque no quiero que perduren las variables sino que al cerrar la web las variables desaparezcan y la proxima vez que entren que se generen otra vez.

espero ser ahora un poco mas concreto :rolleyes:

un saludo!!!

:lol: Ah! ahora si.

bueno puedes probar usando setParams() de el singleton de la aplicacion para definir parametros de manera global.

Ejem




   $misvariables = array('nombre'=>$valor,'nombre2'=>$valor2);

   Yii::app()->setParams($misvariables);



Usalo en el momento que consultas a la base de datos y guarda los valores justo ahi.

No lo entiendo , declarando esto en el index de layouts:




$valor="Varname";

$valor2="pordefecto";

$misvariables = array('nombre'=>$valor,'nombre2'=>$valor2);

Yii::app()->setParams($misvariables);

print_r($misvariables);

print_r(Yii::app()->getParams());



obetnogo esto:




CAttributeCollection Object ( [caseSensitive] => 1 [_d:CMap:private] => Array ( [adminEmail] => XYZ@zxy.com [siteOff] => off [template] => liso [nombre] => Varname [nombre2] => pordefecto ) [_r:CMap:private] => [_e:CComponent:private] => [_m:CComponent:private] => )



me lo hace bien pero cuando voy a ver lo que tengo por ejemplo en el index de site la de $misvariables no existe <_<

me sale esto otro:




CAttributeCollection Object ( [caseSensitive] => 1 [_d:CMap:private] => Array ( [adminEmail] => XYZ@zxy.com [siteOff] => off [template] => liso ) [_r:CMap:private] => [_e:CComponent:private] => [_m:CComponent:private] => )



no lo entiendo…

Intenta entonces haciendo esto en el bootstrap (archivo index.php de la aplicacion) .




// change the following paths if necessary

$yii=dirname(__FILE__).'/../yii/framework/yii.php';

$config=dirname(__FILE__).'/protected/config/main.php';


// remove the following lines when in production mode

defined('YII_DEBUG') or define('YII_DEBUG',true);

// specify how many levels of call stack should be shown in each log message

defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);


require_once($yii);

Yii::createWebApplication(&$config)->run(); //<-- usa el operador ampersand para mantener un puntero al array


/***********

 En esta parte introduces tu consulta a la db en donde extraes tus datos y lo guardas en una variable---en este  caso yo figuro que los guarde en una llamada $tusdatos

************

**/




//Aqui ago un merge de el array con los datos a params.

$config['params'] = CMap::mergeArray($config['params'],$tusdatos);




Prueba eso y avisas si funciono :) para buscar otra salida rapido

Saludos

No me hagas caso , intentaba generarlo desde una vista y acceder a el desde otra vista :( soy un desastre… cuando no pienso bien las cosas :D

ahora me funciona todo perfecto!

Haha no importa, ya me habias puesto a pensar

:D