url-rewriting - pretty - yii2 url web
"Embellecimiento" de una URL en Yii (2)
Agregue un método getUrl en su modelo de Usuario
public function getUrl()
{
return Yii::app()->createUrl(''controller/action'', array(
''id''=>$this->id,
''username''=>$this->username,
));
}
Agregue la siguiente regla componente urlManager
en config/main.php
''controller/action/<username:.*?>/<id: /d+>''=>''controller/action''
Y use el atributo virtual de url
modelos en todas partes
Quiero convertir una URL que tiene el formato
ruta / a / mi / aplicación / Controller_action / id / 2
a
ruta / a / mi / aplicación / Controller_action / id / User_corresponding_to_id_2
Ya he visto este tutorial de Yii, pero no me ayuda con nada. Puede alguien ayudarme con esto?
EDIT : también me gustaría saber si esto es posible incluso en el escenario POST, es decir, solo tendré path / to / my / app / Controller_action en la URL.
dInGd0nG está en la pista correcta, pero si entiendo correctamente, usted desea hacer acciones basadas en el nombre de usuario real en lugar de la identificación, ¿verdad?
No es tan difícil en Yii. Supongo que aquí, por simplicidad, el controlador es usuario y la acción es vista.
Su controlador de usuario:
public function actionView($id)
{
if (is_numeric($id))
$oUser = User::model()->findByPk($id);
else
// Luckily Yii does parameter binding, wouldn''t be such a good idea otherwise :)
$oUser = User::model()->findByAttributes(array(''username'' => $id));
...
}
Tu configuración de urlManager:
''user/view/<id: /w+>'' => ''user/view'',
O más en general:
''user/<action: /w+>/<id: /w+> => ''user/<action>'',
Para generar una url de usuario en una vista:
$this->createUrl(''user/view'', array(''id'' => $oUser->username));