отправка 2 значений в массив из одного флажка - PullRequest
2 голосов
/ 04 марта 2012

У меня есть ситуация, когда я хотел бы опубликовать два значения в массив строки поискового запроса из одного флажка.Из-за дизайна я не могу просто добавить еще один флажок.Соответствующий флажок выглядит так:

<input name="wpp_search[property_type][]" value="rental_home" type="checkbox" id="choice_c"/>
<label for="choice_c">For Rent</label>

, что я теперь получаю в строке запроса, это ...

{url}?wpp_search[property_type][0]=rental_home 

, но мне нужно привязать два значения к этомупроверьте, чтобы я закончил с этим:

{url}?wpp_search[property_type][0]=rental_home&wpp_search[property_type][1]=building

Какие-нибудь простые решения?Существует только один другой флажок, который уже передает этот массив, поэтому я мог бы установить этот флажок на

{url}?wpp_search[property_type][0]=rental_home&wpp_search[property_type][2]=building

Ответы [ 2 ]

1 голос
/ 08 июня 2012

Вы можете разделить значения, например, "|"как это value="value1|value2".Затем вы можете использовать функцию explode: $p = explode("|", $value); и получите 2 значения.

0 голосов
/ 04 марта 2012

Как правило, невозможно отправить одно значение как два.

Один из способов, который я мог бы себе представить, это перенастроить начальную настройку arg_separator.input:

arg_separator.input = ";&"

Это позволит вам также использовать ; для разделения значений, которые затем позволят вам ввести второе значение для этого значения:

<input name="wpp_search[property_type][0]" 
       value="rental_home;wpp_search[property_type][1]=building"
       ...
/>

Если вы используете значение ; в других значениях формы, вам, естественно, нужно правильно экранировать их, чтобы сделать это совместимым.

Другой способ заключается в том, что вы вставляете скрытое поле с этим значением, и если ваш флажок установлен, вы меняете его имя на правильное имя. Если флажок не установлен, вы меняете его имя обратно на что-то не так:

<input type="hidden" name="---wpp_search[property_type][1]" value="=building" />

Возьмите ссылку на javascript по вашему выбору и выполните необходимые манипуляции с DOM, щелкнув другой флажок, чтобы удалить три --- в начале имени.

...