Archivo para Diciembre, 2008


Diferencias de visión entre el programador y los usuarios

Me ha hecho mucha gracia esto, me ha gustado tanto que incluso la he traducido.

Seguro que todos los que programamos, nos sentiremos identificados con esta imagen:

 

Diferencias de visión entre un programador y el usuario

Diferencias de visión entre el programador y los usuarios

Aparte de ser divertido es incluso educativo.

Muchas veces nos centramos en muchos elementos que el usuario final no va a valorar, el usuario no quiere conocer que hay “detrás” de la aplicación, sino en lo que es capaz de hacer, o digamos de mostrarle. 

 La imagen original la he sacado del blog Gran Angular.

Guardando ajustes para nuestra aplicación con CakePHP

Si te gusta desarrollar páginas aplicaciones web con PHP y aún no usas ningún framework de los varios que hay, no se a qué estás esperando, no voy a exponer aquí las múltiples ventajas de usar un framework, o cuál es mejor, todo se lo puedes preguntar a Google.

Yo personalmente uso CakePHP, y algunas veces, necesitamos guardar los ajustes de nuestra aplicación, por ejemplo: claves API, emails, datos de contacto, etc..

Navegando por The Bakery (de entrada casi obligatoria para cualquier desarrollador de CakePHP) me encontré con este artículo escrito por Cameron Perry en el que explicaba cómo guardar en nuestra base de datos todos los ajustes en un array serializado.

Es casi lo que necesito, pero no me gusta la idea de tenerlo todo en un array, es un atraso, teniendo bases de datos potentísimas como es MySQL, por lo que me puse manos a la obra y modifiqué el trabajo de Cameron.

La idea básicamente es la misma, pero en vez de guardar todos los ajustes juntos en una columna voy a guardar cada uno por separado, esto nos permitirá que los admins de nuestra aplicación puedan cambiar los ajustes como ellos quieran.

Vamos a ponernos manos a la obra.

1) Crear nuestra tabla en la base de datos

El primer paso obviamente es crear la tabla donde se almacenarán todos los ajustes, podemos hacerlo con una simple consulta como esta:

CREATE TABLE `settings` (
  1.   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  2.   `key` VARCHAR(48) NOT NULL,
  3.   `value` TEXT,
  4.   PRIMARY KEY  (`id`),
  5.   UNIQUE KEY `key` (`key`)
  6. )

2) Crear el modelo, el controlador y las vistas

Utilizando “cake bake” creamos rápidamente el modelo, el controlador y las vistas.

Una vez creado, modifica el archivo de modelo, en este caso “setting.php” (normalmente está en la carpeta “app/models”), con lo siguiente:

class Setting extends AppModel {
  1.  var $name = 'Setting';
  2.  var $key = 'Opc'; // Se puede cambiar por lo que quieras
  3.  var $custom_settings = array();
  4.  
  5.     // Recibe los datos de configuración de la base de datos
  6.     function getcfg(){
  7.      // Consigue los datos de configuración de la base de datos y los mete en un array
  8.   $cfgs = $this->find('all', array('fields'=>array('id','key','value')));
  9.  
  10.   // Si no es un array salimos
  11.   if( !is_array($cfgs) ) return;
  12.  
  13.   // Procesamos cada configuración
  14.   foreach($cfgs as $cfg) {
  15.  
  16.    // Crea el array para usarlo más tarde
  17.    $data_array = array(
  18.       'id' => $cfg['Setting']['id'],
  19.       'key' => $cfg['Setting']['key'],
  20.       'value' => $cfg['Setting']['value'] );
  21.    $this->custom_settings[] = $data_array;
  22.  
  23.    // Escrebe el array en la configuración de CakePHP
  24.    Configure::write($this->key . '.' . $cfg['Setting']['key'], $cfg['Setting']['value']);
  25.   }
  26.     }
  27. }

3) Modificar el archivo AppController

Bien, lo siguiente es modificar el archivo AppController, si aún no lo has creado ¿a qué esperas?, debe estar en “app/app_controller.php”.

class AppController extends Controller {
  1.  
  2.      var $uses = array('Setting');
  3.  
  4.      function beforeFilter(){
  5.          // Procesa nuestras configuraciones de la base de datos
  6.          $this->Setting->getcfg();
  7.      }
  8. }

4) ¡Usarlo!

Pues ya está todo listo, ahora podemos usar nuestros ajustes en cualquier sitio, un ejemplo de cómo hacerlo es:

echo “Mi configuración” . Configure::read('Opc.title'); //devuelve 'Mi pedazo de página';
  1. SI has cambiado el valor de la variable key en el paso 2 debes cambiarlo aquí también, por ejemplo, si has definido $key como "MyApp" tienes que leer la configuración así:
  2. <pre lang="php">echo "Mi configuración" . Configure::read('MyApp.title'); //devuelve 'Mi pedazo de página';

Como ves CakePHP te deja hacer lo que tengas en la mente, y nunca está de más trabajar sobre el código que otra persona ha realizado, es uno de los principios fundamentales del open source, coger algo que ya está hecho y adaptarlo a sus necesidades. ¡Tú también puedes hacer lo mismo!

Powered by WordPress | Theme: Motion by 85ideas.