Задать вопрос

В URL при роутинге не получается передать массив, что делать?

Добрый день, камрады!
Прошу помочь в следующем вопросе:
Переписываю сайт на модель MVC (изучаю), и пошел до фильтра товаров.
Раньше было несколько несколько групп "чекбоксов", с одинаковым "name" по типу:
<input type="checkbox" name="gender[]" value="Мужские">
<input type="checkbox" name="gender[]" value="Женские">
<input type="checkbox" name="gender[]" value="Детские">

5d88c317830d7884935954.png

Если было выбрано несколько чекбоксов с одинаковым name, то они передавались в GET в следующем виде:
?gender[]=Мужские&gender[]=Женские
данные воспринимались как массив gender, который хранит два значения (Мужские,Женские) и при передаче далее в класс обрабатывается, отправляется запрос к SQL, все работает.

Но при переписывании на MVC используется роутинг. И URL будет выглядеть следующим образом
localhost/marketAJAX/index/gender[]/Мужские/gender[]/Женские /material[]/Сталь/from/5000/
, где
marketAJAX - контроллер,
index - экшн,
gender[]/Мужские/gender[]/Женские/material[]/Сталь/from/5000/ — параметры

Но фишка в том, что теперь gender[] -- интерпретируется не как массив, а как строка и вместо массива с двумя значениями я получаю одну переменную gender[] в которую сначала присваивается значение "Мужские", а затем оно затирается и присваивается значение "Женские".

Если попробовать добавить к каждому name помимо названия число, например gender[1], gender[2], gender[3], то возникнут проблемы в SQL запросе, придется писать RegEx, чтобы выковырнуть эти [ххх].

Вопрос: регулярные выражения единственный выход? Думаю, что моя проблема имеет более элегантное решение.
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 4
@green_goo
localhost/marketAJAX/index/gender[]/Мужские/gender[]/Женские /material[]/Сталь/from/5000/

Какой ужас. Так
?gender[]=Мужские&gender[]=Женские
делать правильно
Ответ написан
Комментировать
@Enj0y
Делайте в POST
Ответ написан
Комментировать
php666
@php666
PHP-макака
красивые урлы имеет смысл делать только для статических ресурсов (SEO, приятный внешний вид)
для поисков, как и раньше, используется Query string

MVC не обязывает делать красивые URL, МVС вообще никак не относится к теме роутинга и вида входящих параметров. можно придумать любую нотацию URL-адреса, приложение, построенное по принципу MVC, не станет от этого "не MVC".

нет ни одного здравого аргумента "маскировать" query string и изобретать велосипед поверх HTTP-протокола
Ответ написан
@Nc_Soft
Всё верно, никакого смысла от query string тут уходить нет.
Если уж очень хочется в чпу, то лучше будет /gender/мужские+женские
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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