Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

Error al clickar link

Estas en el tema de Error al clickar link en el foro de Drupal en Foros del Web. Buenas! Sigo con la construcción de mi módulo, y para hacer pruebas estoy haciendo algo muy sencillito a priori, para vosotros seguro, pero a mi ...
  #1 (permalink)  
Antiguo 20/01/2011, 10:44
 
Fecha de Ingreso: octubre-2010
Mensajes: 33
Antigüedad: 13 años, 6 meses
Puntos: 0
Error al clickar link

Buenas!

Sigo con la construcción de mi módulo, y para hacer pruebas estoy haciendo algo muy sencillito a priori, para vosotros seguro, pero a mi ya me da problemas

Digamos que ya he terminado todo el código suficiente para que el módulo haga mi función (simplemente quiero probar un pequeño formulario). He implementado los archivos info, install y module.

El resultado de momento es que me muestra el bloque de mi módulo correctamente en la página, con su título y su link de manera perfecta. Pero a la hora de clicar el link, en vez de ir a la siguiente página me da un error.

Os pongo el código de la parte que creo que debe fallar y el error

Como resultado he puesto sólo letras para hacer la prueba, aún no he implementado el formulario

Código:
function recomendacion_block($op = 'list', $delta = 0, $edit = array())
{
    if ( $op == "list")
    {
        $blocks = array();
        $blocks[0]["info"] = t('Recomienda esta web a tus amigos!'); 
        return $blocks;
    }
    
    else if ($op == 'view') 
    {
        $content = '';
        $block = array();
        switch ($delta)
        {
            case 0:
             $block['subject'] = t('Recomendar web');
             $link = l( t("Recomienda ahora"), "recomendacion/mensaje"); 
             $content .= '<div class="link">' . $link . "</div>";
            break;
        } 
        $block['content'] = $content;
        return $block;
    }
              
}


/**
* Implementation of hook_menu().
*/

function recomendacion_menu()
{
    $items = array();
    $items['recomendacion/mensaje'] = array 
    (
        'title' => 'Envia tu recomendación',
        'description' => 'Ir a escribir la recomendación',
        'page callback' => 'recomendacion_escribir_mensaje',
        'access arguments' => array ('Recomendar web'),
        'type' => MENU_CALLBACK,
    );
    return $items;
}

function recomendacion_escribir_mensaje()
{
    $output="aeiou";
    return $output;
}
Y al cliclar el link resultate me salta el error:
Código:
Fatal error: Unsupported operand types in C:\xampp\htdocs\drupal619\includes\common.inc on line 1592

Alguna idea???Gracias!
  #2 (permalink)  
Antiguo 21/01/2011, 04:43
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: Error al clickar link

En algun otro lado de tu modulo llamas a la funcion l() ? el error tiene que ver con eso.

Saludos.
  #3 (permalink)  
Antiguo 21/01/2011, 10:21
 
Fecha de Ingreso: octubre-2010
Mensajes: 33
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Error al clickar link

No, sólo la utilizo ahí para crear el link.
  #4 (permalink)  
Antiguo 21/01/2011, 14:33
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: Error al clickar link

Mira, es que el error tiene que ver con la funcion l(), te recomendaria que pruebes dos cosas:

1- Cambiar la funcion l() por <a href=..., osea no usar la api de Drupal, si no crear el enlace con html puro.
2- Si lo anterior no cambia nada, proba depurar el hook_menu, dejando solamente el "page callback".

Otra cosa, tambien, cada vez que te tira el error en el common.inc, en el watchdog se te almacena el error PHP, podes verlo desde "Entradas recientes al registro", podrias poner aca que error tira?
Ya me decis que tal.

Saludos.
  #5 (permalink)  
Antiguo 21/01/2011, 21:26
 
Fecha de Ingreso: octubre-2010
Mensajes: 33
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Error al clickar link

Bueno, la cosa "avanza" ! jaja

Finalmente he probado la segunda opción que me das, he dejado sólo el page callback y el access arguments, ya que sino me decía que acceso denegado. Y bueno, el link funciona, entra en la siguiente página y muestra las letras de prueba que había puesto.

Y nada, se supone que ya estaba todo así que decidí probar introducir un formulario, y nose porque no me lo muestra, como sino existiera

Lo que he añadido simplemente es:

Código:
function recomendacion_escribir_mensaje()
{
   $content = '';
   $content .= drupal_get_form ( 'recomendacion_escribir_mensaje_form' );
   return $content;
}


function recomendacion_escribir_mensaje_form()
{
    return array(); //Aqui con esto para probar se supone que funciona no?
}
Qué hago mal?
  #6 (permalink)  
Antiguo 22/01/2011, 02:52
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: Error al clickar link

Pero vamos a ver una cosa, vos sabes pq te tira "Acceso denegado"? Es que me da la sensacion de que para solucionar el problema parcheas quitando o agregando cosas, y la idea es solucionarlo para que vos y yo aprendamos. Yo no soy un profesional usando este tipo de hooks, solo busco tus soluciones en la web de Drupal, para saber como actuar en caso de que me pase un problema parecido al tuyo!
Asi nunca vas a aprender!
El access arguments es la lista de permisos que debe tener el usuario para poder ver el page callback, si vos no tenias generado, con el hook_perm, un permiso llamado "Recomendar web", entonces siempre te va a tirar un 403....

Con respecto a tu problema, lo que hice yo fue entrar a la web de la api de Drupal, y ver como funciona la funcion drupal_get_form:

http://api.drupal.org/api/drupal/inc...pal_get_form/7

A esa funcion le pasas la id del formulario, y si una funcion con ese nombre existe, entonces devuelve el formulario que se genera dentro dentro. Osea en "recomendacion_escribir_mensaje_form" deberias generar un formulario dentro de la variable $form, y retornarlo. Si lo generas vacio, lo mas logico es que no te muestre nada, que es lo que te pasa a vos ahora mismo.

Saludos.
  #7 (permalink)  
Antiguo 22/01/2011, 09:22
 
Fecha de Ingreso: octubre-2010
Mensajes: 33
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Error al clickar link

Soy novato pero no tanto! jeje

Claro que tengo implementado el hook_perm con el permiso Recomendar Web, por eso me hacía falta el access argument. Sin el hook_perm por mucho que hubiera puesto el access argument tampoco me hubiera funcionado.

En cuanto pruebe lo del formulario te digo algo! :)

Etiquetas: link
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:44.