Зная вашу версию, объясняю, есть в
urlManager роли, которые надо указать. Если в ролях используются get запросы, тогда надо учитывать, число это или строка, если число, ставим значение 'd' (digital) если это строка,указываем значение 'w' (word), как в примере:
'urlManager'=> [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules'=> [
// возвратит название домена, без слэша ( 1 )
'' => 'site/index',
// возвратит экшен без названия папки контроллера ( 2 )
'<action:(login|logout|new|index|contact)>' => 'site/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
// возвратит get запрос с ссылкой, у которой переменная $link отобразит строку ( 3 )
'site/news/<link:\w+>' => 'site/news',
],
],
путь к данным параметрам
/frontend/config/main.php
в контроллере
/frontend/controllers/SiteController.phppublic function actionNews($link = '') {
// делаем get запрос
$get = News::find()->where(['link' => $link])->one();
return $this->render('news', ['link' => $link, 'get' => $get,]);
}
естественно не забыть указать узы для класса, и создать во вьюхе файл
news.php
В самом файле все get-переменные будут выглядеть примерно так:
<?=$get->header;?>
понятно, что
$get - это переменная делающая запрос в БД, а
header - переменная и название столбца в таблице БД, из которой передаётся значение по переменной
$link а не
$id !!!
Получится что-то типа:
// это для примера, писать не надо
<?php
$link = 'first';
?>
http://mysite.host/frontend/web/site/news/first
Если хотите убрать
/frontend/web/
, придётся поменять
session и
request, это может привести к потере директорий для многих стилей и скриптов, и перекроет кислород бекэнд разделу, но можно сделать модуль, создать свой лэяут и отделить во фронтэнде этот раздел, чтобы он был как бы бэкэндом, в тоже время папки с админкой будут во фронтэнде, операция сложная и требует знаний архетектуры Yii2, знания я черпаю из
документации, хоть она и на английском, но там есть знакомые фрагменты кода Yii2 и даже описаны примеры и как и что применить.
В конечном итоге я добился вида ссылок:
mysite.host/site/news/first - при get-запросе, случай ( 3 )
и
mysite.host/news - при отображении страницы из экшена. Случай ( 2 )
--
Смотреть выше.
Успехов вам ))