Задать вопрос
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 параметре.

Спасибо
  • Вопрос задан
  • 216 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • FructCode
    Yii2 Фреймворк
    2 месяца
    Далее
Решения вопроса 1
Если у вас url в БД записан как slug, то $url ниже заменить на $slug, ну или на что там у вас...

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

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

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

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

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

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