Как сделать НЕ ЧПУ урл?

241
16 ноября 2017, 05:14

Вопрос в продолжение к этому. Я было временно сделал чтобы этот экшн принимал форму как объект, но быстро понял что это чрезвычайно неудобно в данном случае. Потому что такая форма с выбором статуса у меня только в одном месте, зато в куче других мест идет изменение статуса с явным его указанием без необходимости выбирать вручную. И мне приходится везде лепить формы вместо того чтобы сделать простую ссылку.

Насколько я понял чтобы не городить огород с JS которого у меня вообще нет в проекте ни строчки будет проще сделать конкретно этот урл не ЧПУ (чтобы он вызывался например так /article/management/status/change?article_id=1&status_id=2). Тогда я смогу эту форму отправлять GET запросом (просто прописав method="get" у формы).

Но все урлы в проекте у меня все равно должны оставаться ЧПУ. И enablePrettyUrl в конфиге стоит. Как же сделать его чтобы параметры именно так передавались? Не нахожу такого в доках. Подскажите пожалуйста.

P.S. Видел вариант где параметры читаются через Yii::$app->request()->get(), но неужели нет более удобного варианта? Чтобы параметры были явно объявлены в методе как обычно? Типа actionChangeStatus($article_id, $status_id).

Answer 1

Минутка наркомании. Поскольку мне очень срочно надо было решить этот вопрос, другого решения я не нашел, а ответа никто не пишет я решил его так:

private function get($key, $default = null) {
    $s = explode('?', Yii::$app->request->url);
    $s = explode('=', end($s));
    $keys = [];
    $values = [];
    foreach ($s as $index => $item) {
        if ($index % 2 == 0)
            $keys[] = $item;
        else
            $values[] = $item;
    }
    $get = array_combine($keys, $values);
    return ArrayHelper::getValue($get, $key, $default);
}
public function actionHello() {
    $name = $this->get('name', 'world');
    return "Hello $name!";
}

Теперь можно делать так: /hello?name=world

READ ALSO
Глобальная область видимости в PHP

Глобальная область видимости в PHP

У меня появилась проблема с глобальной областью видимостиЯ знаю что глобальные переменные это зло, но есть необходимость их использовать...

206
Особенности $_SESSION php

Особенности $_SESSION php

Насколько безопасным является использование сессий в php?

197
Парсер для сайта [требует правки]

Парсер для сайта [требует правки]

ЗдравствуйтеУ меня такой вопрос: есть сайт, на котором имеется обычный поиск по сайту

272
Как расшифровать файл

Как расшифровать файл

Есть зашифрованный php файлВот содержимое

336