Se encuentra usted aquí

Pasar variables en urls

Hola estoy con drupal 6, en un modulo hago links con la funcion l() para cambiar de un nodo a otro , pero necesito agregar parametros extras por ejemplo:

/node/add/empresa/4

Si entra al nodo "ADD" pero no logro ver el contenido de la variable empresa que deberia ser 4.

Encontre la opcion de arg(), pero debo especificar en que punto estara el valor.

tambien esta algo de "drupal_get_form" pero no entiendo como usarlo.

 

La forma Tradicional de urls seria:  www.paginaweb?empresa=4

Dentro de php solo imprimes el valor de la variable $empresa y te mostrara 4.

 

En drupal entiendo que lo guarda de alguna forma por seguridad, pero aun no entiendo como tomar esos parametros de la url recibida.

 

Gracias de antemano.

 

Forums: 
Versión: 
Taxonomy upgrade extras: 
Directorio: 

Segun yo te habia contestado pero creo que no se guardo mi respuesta, por eso escribo de nuevo.

Sabia de la opcion arg, pero como no tenia la seguridad de saber la posicion en el arreglo del parametro deseado no me convencia.

Lo de prepopulate no la conocia, leo que despues de instalarla, puedes pasar atravez de la url los valores que tendran por default los input de la forma.

Muy buena opcion.

 

Primero

/node/add/empresa/4 no existe. Existe node/4 node/4/edit y node/add/empresa

el 4 es el nid (node id) y se genera despues de q la forma fue enviada, no antes (aunque hay un presave que no me voy a meter ahi porque se complicaria esto).

Segundo
t() no se usa para hacer links, para hacer links es l() y lo usas con:

l($text, $path, $options = array();

dentro de $path puedes imprimir cualquier cosa, por ejemplo:

$empresa = get_empresa($user->uid); // supon q se pasa a esta funcion el uid y te regresa un nid de la empresa a la que ese usuario pertenece.

$path = "node/".$empresa;
print l(t('Empresa mia'), $path);

Y listo.

drupal_get_form es para otra cosa distinta

Gracias Luis por contestar.

Tienes razon, la funcion t es para traducir el texto, cuando es multilenguaje.

Ahora veo que parte de mi error era poner "/node/add/empresa/4" (como tu dices, no existe.)

Pues lo queria manejar igual al tradicional "?node=add&empresa=4", y era parte de mi error.

Por otro lado, al ver la funcionalidad de theme_table() que ayuda hacer tablas dinamicas, note que pasan valores de orden y columna, note el:

 $_GET[ variable ]

Un ejemplo en la url:

node/4/edit&sort=asc&order=Mensaje

Poner en la forma que recibe el url:

$columna_orden = $_GET[ 'order' ]; Asigna el valor "Mensaje"

$tipo_orden = $_GET[ 'sort' ]; Asigna el valor "asc"

 

 

 

Que felicidad es saber que no estoy solo en mexico con mis dudas en este maravilloso mundo de Drupal.

Gracias a lo que dijeron, lo solucione asi:

Se arma el link:

$options = array('html' => "True" ,'query' => 'empresalocal=4&color=azul' ) ;

Se habilita el html y dentro de query los valores en pares.Agregue tambien el parametro color con el valo azul por si se necesita enviar mas valores.

$link = l( t("Editar Empresa 4"), "node/4/edit/", $options );

Aqui t() traduce la frase "Editar Empresa 4" en multilenguaje, llama al node 4, editando y envia en options los valores.

Se toman los valores de variables:

$content .= " <br>La empresa que se edita es:" . $_GET['empresalocal'] ;

La variable $content recibe las instrucciones html para luego imprimirla en el node.tpl.php.

 

Aprovecho de platicar la opcion que encontre: user_save

Se guardan variables en la session del usuario actual.

if ($user) {
  $array = array('enviar_opcion' => 'diasoleado');
  user_save($user, $array);
}

Si existe una session de algun usuario, se hace el arreglo y se graba.

Despues para tomar el valor previamente grabado:

$opcion = $user->enviar_opcion ;
print "opcion contiene " .  $opcion ;

Por seguridad se recomienda pasar los minimos parametros por url y el resto puede ser por user_save.

 

 

Aqui lo dejo como referencia para un futuro.

Y no dudo que pronto usare "Prepopulate".

 

 

 

Edgar Vargas

Dios nos Bendice !!!!