En passant des valeurs get mutile mes urls
-
25-10-2019 - |
Question
Juste mis à jour de 1,3 à 2.0.3 et je suis en train de migrer tous les changements. Je remarque que la ligne suivante
echo $this->Html->link('Quote', array('controller'=>'crm_quotes', 'action'=>'index', $lead['id'].'/'.$crmContact['CrmContact']['id']), null);
construit le "/crm_quotes/index/15/21"
url. Lorsque je clique sur le lien, je suis pris à l'URL:
"/crm_quotes/index/15%2F212
il est donc remplacer les caractères avec le #
html mais il est finalement brisé le lien.
Quand je modifier manuellement l'URL à la bonne:
"/crm_quotes/index/15/21"
la page se charge.
Quelqu'un peut-il me éclairer? Dois-je utiliser la fonction url
plutôt que lien?
J'ai beaucoup de pages qui ont besoin de plusieurs paramètres dans l'URL. J'utilisais des paramètres nommés, mais après avoir lu certains commentaires de Mark histoire j'ai décidé d'arrêter les paramètres nommés comme il a laissé entendre à leur retrait possible des versions futures.
La solution
transmettre les paramètres supplémentaires de la manière correcte (gâteau). Gâteau code une /
dans l'URL qu'il n'a pas expressément; Je ne l'ai pas trouvé comment éviter ce encore.
echo $this->Html->link('Quote', array('controller'=>'crm_quotes',
'action'=>'index',
$lead['id'],
$crmContact['CrmContact']['id']), null);
Autres conseils
En réponse à votre problème: il suffit de prendre le concaténés « / » out et passer les ID en tant que valeurs distinctes dans ce tableau. Il faut placer les barres obliques avant entre eux automatiquement.
echo $this->Html->link('Quote', array(
'controller'=>'crm_quotes',
'action'=>'index',
$lead['id'],
$crmContact['CrmContact']['id']
));
Sur le thème de codage: Je pense que le problème est ici qu'il ne sait pas que vous avez l'intention pour le / à traiter comme une partie valide de l'URL au lieu d'un texte. Le comportement par défaut est de caractères de réserve de encode pour éviter ce problème, il est encodée URL.
Voici un question similaire, et une réponse au sujet URL encodage en général .