Задать вопрос
humiliation
@humiliation
Чем больше знаю - тем больше дурак

ЧПУ Yii2 — Страница без _get параметров. Как организовать?

Приветствую, подскажите каким образом в Yii2 работает роутер. В данный момент делаю так:

site.ru/news?id=4

в контроллере

public function actionNews($id)
    {
        $article = News::findOne($id);
        $model = News::find()->where(['id' => $id])->one();
        $model->views_total++;
        $model->save();

        $categories = ArrayHelper::map($article->relatedCategories, 'id', 'name');

        return $this->render('article', ['article'=>$article, 'categories'=>$categories]);
    }


да, не все идеально, но сейчас я делаю прототип и попутно изучаю Yii2. Наверное, сохранять всю модель избыточно


Хотелось бы в урле видеть site.ru/news/zagolovok-novosti

Каким образом провернуть подобное и отвязаться от гетов в урле? В целом, я даже не совсем понял почему они по дефолту цепляются в _get параметре.

Спасибо
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
Если у вас url в БД записан как slug, то $url ниже заменить на $slug, ну или на что там у вас...

Контроллер:
public function actionNews($url)
{
        $model = $this->findModel($url);

UrlManager:
'news/<url:[\w\-]+>' => 'news/view',

В целом, я даже не совсем понял почему они по дефолту цепляются в _get параметре

Потому что по дефолту контроллер фреймворк ничего не знает про ваши деяния, id есть всегда, потому для него все сделано по умолчанию
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы