urlmanager pretty parameter example app url-rewriting yii

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));