url manager d+ w+

Hola de nuevo

Tengo una gran duda, estoy leyendo acerca del url manager y las reglas pero no logro entender que significa lo de d+ y w+ en ellas

<controller:\[color="#FF0000"]w+[/color]>/<id:\[color="#FF0000"]d+[/color]>’=>’<controller>/view

Alguien de ustedes sabe?

Gracias y saludos

Hola!

Son expresiones regulares para manejar las urls.

\w+ significa literlmente "Cualquier letra, número o guiones bajos una o más veces"

\d+ significa "Cualquier dígito una o más veces"

<controller:\w+>/<id:\d+>’=>’<controller>/view

Quiere decir que al ir a una URL por ejemplo: xyz/123 YII va a tratar de ejecutar la acción actionView del controller XyzController y le va a pasar la variable id con el valor 123 como argumento.

Sería como hacer xyz/view/id/123.

¿Muy confuso?

ya se que este tema es antiguo, pero me ha surgido una duda, tengo un action con un parametro key, del tipo


/cruge/ui/activationurl/key/336d5ebc5436534e61d16e63ddfca327

y me gustaría transformarlo en:


activation/key/336d5ebc5436534e61d16e63ddfca327

he probado con la regla en el urlmanager:


'cruge/ui/activationurl/<key:\d+>'=>'activation',

y he cambiado muchas cosas, pero nada…

se que debe ser fácil, pero no me sale!!!

Alguna idea???

He probado con htaccess, con las siguientes lineas:





Options +FollowSymLinks

IndexIgnore */*

RewriteEngine on


# if a directory or a file exists, use it directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d


# otherwise forward it to index.php

RewriteRule . index.php


#Esta es la linea que debería simplificarme la url

Rewriterule ^cruge/ui/activationurl/key/(.*)$ activation/key/$1




Pero tampoco funciona!!! arggggg jejejejeje

Nunca usé Cruge como para probar, pero me parece que hay un par de temas:

1 - <key:\d+>, le estás diciendo que sólo puede aceptar dígitos como el valor de la variable key, y vos necesitás tanto letras como números, por eso tenés que usar \w.

2 - El orden en los que definís la regla: la clave es la url "real" (que vas a ver en el navegador, con sus variables) y el valor es la acción que tiene que ejecutar realmente.

Entonces quedaría algo como:


'activation/key/<key:\w+>' => 'cruge/ui/activationUrl',

Igualmente puede ser que esté diciendo cualquier cosa porque son las 4 de la mañana y recién termino de trabajar, haha…

Saludos! y avisá si le encontrás la vuelta!

Hola! y gracias por contestar!!

Sigue sin funcionar!! y ni idea de porque!! He pasado el action a mi controlador site, y me funciona la url en la forma


site/activation/key/rw4f9v6wj59vyh59

Pero con la norma :


'activation/key/<key:\w+>' => 'site/activation',

no reconoce la url:


'activation/key/rw4f9v6wj59vyh59

he probado a ponerla al principio de la normas url, pero nada!!

Sigo probando!! jejejejee un saludo!

Qué raro, yo lo probé localmente en un módulo cualquiera y anduvo la regla en cuestión.

¿Entonces no te funciona en el módulo Cruge pero sí si lo pasás al controlador Site?

Lo he "conseguido" usando la norma


'activation-key/<key:\w+>'=>'site/activation',

pero no activation/key… en fin así se va a quedar!! jejejeje Gracias y saludos!