Hero

Como pasar valores de PHP a Javascript en Drupal 7

Junio 05, 2013

kenneth
JavaScript
jQuery
PHP
Programación
Drupal
Desarrollo de Modulos

Cuando trabajamos en proyectos Web, la mayoría de tareas y casos de usos lo podemos resolver por medio del lenguaje de programación al lado del servidor sin embargo no podemos olvidar o dejar simplemente de lado la existencia de un lenguaje al lado del cliente como lo es JavaScript.

En algunos requerimientos es necesario enviar variables desde el lado del servidor osea desde PHP para ser procesadas desde el lado del cliente con JavaScript, para esta necesidad Drupal nos ofrece la facilidad de utilizar un objeto global en JavaScript llamado Drupal, donde podemos tener acceso a:

  • Drupal.settings
  • Drupal.behaviors
  • Drupal.theme
  • Drupal.t
  1. Enviar valores a Drupal.settings

Ahora bien, como nuestra necesidad actual es pasar variables desde Drupal hasta JavaScript utilizaremos Drupal.setting y de esta manera poder cumplir este requerimiento, en este caso utilizaremos la función drupal_add_js para enviar estos valores, el código se puede ver de la siguiente manera:

<pre title="Enviando valores PHP por medio de Drupal.setting">$user = user_uid_optional_load();
$info = array(
 'user' => $user,
);
drupal_add_js(array('modulo_personalizado' => array('info' => $info)), 'setting');

En el código anterior se pasan los valores obtenidos de la función de Drupal user_uid_optional_load.

  1. Accediendo el objeto Drupal.settings

Una vez que hemos enviado la información hasta JavaScript por medio de Drupal.settings, podemos tener acceso a esta información, según como muestra la imagen haciendo uso de la consola de JavaScript del navegador Google Chrome.

drupal setting modulo personalizado

  1. Consideraciones finales

Para este ejemplo, utilizamos la función user_uid_optional_load para cargar el usuario actual, según como indica su documentación: “A fully-loaded $user object upon successful user load, FALSE if user cannot be loaded.”.

Entonces si deseamos realizar algo similar debemos pensar en remover algunas propiedades del objeto $user, para efectos de seguridad y también enviar únicamente los datos que realmente necesitamos y de esta manera hacer más liviano el objeto.

Esperando que les sirve de mucha ayuda,

Saludos,

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.