Как создать красивую ссылку в yii для модуля

Я много искал и много пытался сделать это, но не повезло. Я ссылаюсь на эту ССЫЛКУ. Но это не решило мою проблему. У меня установлен пользовательский модуль в yii (yii 2). и у меня есть URL-адрес профиля пользователя, например

http://192.168.1.31/Eb/user/profile?uguid=ac0c4558-77fc-4896-9b30-f77afe4d81cd


но я хочу, чтобы это понравилось

http://192.168.1.31/Eb/user/profile/ac0c4558-77fc-4896-9b30-f77afe4d81cd


Я имею в виду без параметра строки запроса guid. Я пытаюсь в диспетчере URL-адресов, как это

'urlManager'=>array(
                'urlFormat'=>'path',
                'showScriptName'=>false,
                'rules'=>array(
           '<controller:\w+>/<action:\w+>/<guid:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),

Как это возможно ??


person Manoj Dhiman    schedule 16.06.2015    source источник


Ответы (2)


В Yii UrlManager ключи rules параметра (атрибута) должны быть < strong>шаблон регулярного выражения. Если я правильно понимаю, ваш URL-адрес имеет структуру CONTROLLER/ACTION (в моем случае Eb - это подпапка), поэтому ваши правила должны быть такими:

'urlManager'=>array(
   'urlFormat'=>'path',
   'showScriptName'=>false,
   'rules'=>array(
        '<controller:\w+>/<action:\w+>/<uguid:\w+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
)

Будьте осторожны, чтобы ваш параметр uguid не был номером, поэтому вы должны использовать w+ вместо d+

Таким образом, вы можете создавать URL-адреса, используя createUrl:

Yii::app()->createUrl('user/profile', array('uguid' => 'USER_ID'))

Результат должен дать то, что вы хотите.

person Taron Saribekyan    schedule 16.06.2015

Доступ к вашему текущему URL-адресу также можно получить с помощью

http://192.168.1.31/Eb/user/profile/uguid/ac0c4558-77fc-4896-9b30-f77afe4d81cd

Вы можете удалить имя своего контроллера, добавив следующую строку в правила urlmanager:

'/Eb/user/profile/<id:([0-9a-zA-Z_\-]+)' => 'Eb/user/profile/uguid/<id>'

Это должно делать свое дело :)

person Apoorv Joshi    schedule 16.06.2015