2009-08-31 6 views
0

J'ai un lien et en cliquant dessus, une fonction est appelée. Dans cette fonction, je définis l'attribut href pour transmettre une variable d'identification. Si j'alerte la valeur de href, je vois l'URL correcte avec l'Id. Mais dans la fonction correspondante dans le contrôleur, Si je fais un $ _GET de cette variable Id, je ne reçois pas la valeur. Quelle est l'erreur?

Ceci est mon lien:

<a href="http://localhost/FormBuilder/reports/export?height=220&width=350" id="export_entries" class="thickbox button" title= "Export" >Export</a> 

Et le correspondant sur la fonction clic:

$("#export_entries").click(function() { 
    $(this).attr("href",$(this).attr("href")+"&id="+formid); 
    alert($(this).attr("href")); 
}); 

Dans cette zone d'alerte, Si je clique sur le deuxième lien, je reçois la valeur

http://localhost/FormBuilder/reports/export?height=220&width=350&id=2 

Mais dans ma fonction d'exportation dans le contrôleur, je n'ai pas la valeur. La variable formid est vide.

function export() 
    { 

     $formid=$_GET['id']; 
     echo " formid: ".$formid; 
     $this->set('formid',$formid); 
    } 

Répondre

0

J'ai trouvé une solution à mon problème. Même si je change l'attribut href dans la fonction JQuery, le navigateur est redirigé vers l'ancienne URL comme indiqué par CMS. Mais si je donne location.href, j'obtiens la fonctionnalité, mais la thickbox n'est pas chargée. Le thickbox se charge que si je place la nouvelle URL dans l'attribut href du lien comme je l'avais déjà fait, par exemple,

$(this).attr("href","http://localhost/FormBuilder/reports/export?height=220&width=350&id="+formid); 

Donc, pour modifier dynamiquement l'URL, je suis allé pour changer le fichier thickbox.js comme mentionné dans this site où nous n'avons pas besoin de mentionner l'attribut href dans le lien lui-même. Nous pourrions définir l'attribut href après avoir cliqué sur le lien, dans la fonction clic du lien et ajoutez la ligne

tb_open_new($(this).attr("href")); 

après avoir défini l'attribut href pour ouvrir cette URL modifiée dans la fenêtre thickbox ..

1

Ce qui est probablement passe est que vous changez l'attribut href, mais le navigateur redirige vers l'ancienne URL inchangée, puisque vous traitez le clic de l'élément d'ancrage.

Vous pouvez construire la chaîne url, annexant le paramètre et rediriger l'utilisateur vers directement, en utilisant location.href:

$("#export_entries").click(function(e) { 
    location.href = $(this).attr("href")+"&id="+formid; 
    e.preventDefault(); 
}); 
+0

Cela fonctionne correct, mais je veux que le plugin thickbox soit chargé. Snd si j'utilise location.href, la vue d'exportation est ouverte dans une nouvelle page Web et non comme une URL thickbox.Pourriez-vous suggérer quelque chose pour charger le plugin thickbox ainsi que rediriger vers cette URL? – Angeline

0

Dans CakePHP, les paramètres fonctionnent comme ceci:

http://localhost/FormBuilder/reports/export/height:220/width:350/id:2 

au lieu de

http://localhost/FormBuilder/reports/export?height=220&width=350&id=2 

Vous pouvez récupérer les paramètres dans votre contrôleur avec

$formid = $this->params['id']; 

Ils sont appelés paramètres nommés. Pour en savoir plus:

http://book.cakephp.org/view/541/Named-parameters

http://bakery.cakephp.org/articles/view/passing-named-parameters

+0

Non, dans ce cas seulement $ _GET fonctionne !! – Angeline

Questions connexes