Использовать имя блога и идентификатор в URL, используя yii2

Мне нужно использовать blogname и id в URL Yii2, так как теперь это мой URL: - http://localhost/html/demo/web/site/blog/blogdetail?id=39

Я хочу изменить эту ссылку на: -

HTTP: // локальный / html / демо / веб / сайт / блог / blogdetail / 39 / ли-Facebook-Skew-The-2016

Это название моего блога "Did-Facebook-Skew-The-2016"

для этого я использую этот код: - файл web.php.

   'rules' => array(
                     'blog/blogdetail/<id:\w+>/<name:\w+>'=>'site/blog/blogdetail/id/<id>/name/<name>/',
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),

и с учетом этого моя ссылка: -

 <a href="<?php echo Yii::$app->urlManager->createUrl([$blogid.'/'.$model->title]); ?>">

1 ответ

Решение
 <a href="<?php echo Yii::$app->urlManager->createUrl(['site/blog/blogdetail', 'id'=>$blogid, 'name'=>$model->title]); ?>">

Как идентификатор, вы можете изменить маршрут с

'blog/blogdetail/<id:\w+>/<name:\w+>'=>'site/blog/blogdetail/id/<id>/name/<name>/',

в

'blog/blogdetail/<id:\w+>/<name:\w+>'=>'site/blog/blogdetail/',

Именованные параметры (в данном случае id и name) автоматически передаются действию.

РЕДАКТИРОВАТЬ: Если у вас есть проблемы с типом параметров, вы можете изменить

<name:\w+>

с

<name:[\w-]+>

Ваш слаг (Did-Facebook-Skew-The-2016) теперь должен совпадать.

Другие вопросы по тегам