404 Su Action Se Un Parametro Contiene Delle Stringhe

Si noti la differenza tra queste due chiamate (GET), che risiede nel solo parametro root passato




... index.php?r=registry/company/relationTree&id=2&root=companyChildId_4






... index.php?r=registry/company/relationTree&id=2&root=4



Il problema è che quando viene eseguita la seconda, quella chiamata col prefisso ‘companyChildId_’ nel parametro ‘root’ ricevo un 404 (pagina non trovata)

Come mai ? Perchè la action non viene riconosciuta se ha dei caratteri aggiuntivi davanti in un parametro?

La firma della action è questa




 public function actionRelationTree($id, $root) 



ho già provato a togliere l’underscore ‘_’, ma il risultato non cambia …

mettendo i caratteri aggiuntivi DOPO il numero invece la chiamata va a buon fine

Per caso le action accettano solo parametri numerici ?

Ciao, ma a prescindere, che ti serve passare come paramentro




root=companyChildId_4



?

passagli solo 4 no? oppure se è solo una questione visiva della url, cambia il nome del paramentro da root a companyChildId, così da avere




index.php?r=registry/company/relationTree&id=2&companyChildId=4



no? :blink:

il problema riguarda il CTreeView che usa come parametro ‘id’, l’id della foglia. Puoi cambiare l’id ma non il nome del parametro

:(

a me scoccia avere in una form che è piuttosto complessa, una fila di id puramente numerici, per cui ho fatto si che gli id venissero generati così.

rimane la curiosità del come mai non si possa passare una stringa ad una action, sempre che sia così

io le stringhe le passo senza problemi, non è che magari il codice si aspetta di ricevere un intero piuttosto che una stringa?

E’ stato controllato il log? Di Apache, di php, di yii?

apache e php non danno nessun errore… yii mi dice che la pagina non è stata trovata.

appena ho tempo faccio un debug dell’intero routing e vedo in base a cosa prende questa decisione.