Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.09.2018 13:02:25

Добавить-исключить get параметры из текущего адреса

Все доброго времени суток!

В интернет-магазине есть переключение валют по ссылке. Где бы не находился пользователь он может переключить валюту и само собой остаться на прежнем месте. Так же можно передать ссылку с конкретной валютой и пользователю открывшему ссылку должна установиться соответствующая валюта.

Вот почему то у меня возникли с этим сложности)) Создал middleware, отслеживаю в нем наличие переменной currency_id, если есть устанавливаю ее в сессию. Но затык с формированием ссылок, к примеру

<a href="site.ru/catalog/test?currency_id=1">rub</a> приложение устанавливает валюту и возвращает на на site.ru/catalog/test

<a href="site.ru/catalog/test?filter[1]=1&filter[2]&currency_id=1">rub</a> приложение устанавливает валюту и возвращает на на site.ru/catalog/test?filter[1]=1&filter[2]

или

<a href="site.ru/blog/?currency_id=1">rub</a> => site.ru/blog/

если соорудить нечто эдакое

{{ url(request()->path(), ['test1' => 1, 'test2' => 2]) }}

на выходе получается site.ru/.../1/2 вместо предпалагаемого site.ru/.../?test1=1&test2=2

Изменено Wizardev (12.09.2018 13:14:58)

Не в сети

#2 12.09.2018 13:52:58

Re: Добавить-исключить get параметры из текущего адреса

Собственно ниже приведенный код формирует необходимый результат. Возможно в стандарте есть готовая функция?

$url = request()->fullUrlWithQuery(
   request()->merge(['test' => 2])->query()
);
function full_url (array $query = [])
{
    $query = !empty($query)
        ? request()->merge($query)->query()
        : request()->query();

    return request()->fullUrlWithQuery($query);
}

Изменено Wizardev (12.09.2018 13:58:36)

Не в сети

#3 12.09.2018 14:25:43

Re: Добавить-исключить get параметры из текущего адреса

сорямба, разобрался

единственное хотелось бы чистит ? если query пуст

function full_url (array $query = [])
{
    $url = request()->fullUrlWithQuery($query);
    if( substr($url, -1, 1) == "?" ) {
        $url = rtrim($url, '?');
    }
    return $url;
}

Не в сети

Подвал раздела