Passando valori get storpia miei URL
-
25-10-2019 - |
Domanda
Just aggiornato da 1,3 a 2.0.3 e sto cercando di migrare tutte le modifiche. Sto notando che la seguente riga
echo $this->Html->link('Quote', array('controller'=>'crm_quotes', 'action'=>'index', $lead['id'].'/'.$crmContact['CrmContact']['id']), null);
costruisce la "/crm_quotes/index/15/21"
URL. Quando clicco sul link sto portato in url:
"/crm_quotes/index/15%2F212
in modo che sia sostituendo i caratteri con il #
html ma è in ultima analisi, interrompere il collegamento.
Quando ho modificare manualmente l'URL a quella corretta:
"/crm_quotes/index/15/21"
la pagina viene caricata.
Qualcuno può illuminarmi? Dovrei usare la funzione url
piuttosto che legame?
Ho un sacco di pagine che hanno bisogno di più parametri passati nell'url. Stavo usando parametri denominati ma dopo aver letto alcuni commenti di Mark Story ho deciso di smettere i parametri denominati come ha accennato alla loro eventuale rimozione da versioni future.
Soluzione
Passare i parametri extra del (torta) modo corretto. Torta codifica qualsiasi /
nell'URL che non ha specificamente previsto; Non ho trovato il modo di prevenire questo ancora.
echo $this->Html->link('Quote', array('controller'=>'crm_quotes',
'action'=>'index',
$lead['id'],
$crmContact['CrmContact']['id']), null);
Altri suggerimenti
Come risposta per il vostro problema: basta prendere la concatenati '/' fuori e passare gli ID come valori separati in tale matrice. Si dovrebbe mettere le barre tra di loro automaticamente.
echo $this->Html->link('Quote', array(
'controller'=>'crm_quotes',
'action'=>'index',
$lead['id'],
$crmContact['CrmContact']['id']
));
In tema di codifica: Penso che il problema qui è che non sa che si intende per l'/ da trattare come una parte valida del URL invece di un testo. Il comportamento predefinito è quello di caratteri di riserva di codifica per evitare questo problema, quindi diventa URL codificato.
Ecco un simile domanda e una risposta su URL encoding in generale .