Для начала чуть теории:
1. Внутри фреймворка путь представляется внутренним маршрутом: controller/action + массив параметров.
2. Фреймворк строит URL и разбирает URL на основе правил URLManager.
3. Правило задаёт связь шаблон URL → внутренний маршрут.
Теперь посмотрим, что у нас.
1. Допустим, у нас посты. У постов есть category_id.
2. Выводит их список PostController::actionCategory.
3. Параметр, который паредаётся — category_id.
Начнём с контроллера:
class PostController extends Controller
{
public function actionCategory($category_id)
{
$posts = Post::find()->where(['category_id' => $category_id])->all();
return $this->render('category', ['posts' => $posts]);
}
}
Далее прописываем следующее правило в конфиг в components → urlManager → rules:
'<category_id>' => 'post/category',
Создать URL на это дело можно так:
echo Url::to(['post/category', 'category_id' => 42]);