Поле Список

Как сделать необязательным для заполнения

#1 29 января 2016 в 17:07
Версия v2.4.0. Создаю поле список в профиле пользователя, к примеру Пол — Мужской, Женский. Соответственно при редактировании профиля в этом списке по умолчанию стоит значение Мужской. То есть неважно захочет ли юзер заполнять это поле или нет, оно все равно будет заполнено, когда он нажмет на кнопку. Как сделать так, чтобы с списках перед значениями выводилась пустая строка, так как это сделано в фильтрах?
#2 29 января 2016 в 18:03
Три пункта вместо двух, первый пункт "Не указан"

Пол — Не указан, Мужской, Женский.

Так если не укажут, то будет значение Пол: "Не указан"

ps: или прочерки поставить — на свое усмотрение
#3 29 января 2016 в 18:14
1|
Мужской
Женский
#4 29 января 2016 в 18:16
Какой смысл делать Поле с выбором пола если оно необязательно… и наверняка не будет использоваться в фильтре? Народ нынче ленивый — Аватарку бы загрузил… и то хорошо ;)
#5 29 января 2016 в 23:45
"Не указан", прочерк или пробел — это просто дополнительные значения в списке, они проблему не решают. Поставлю я пробел как Сергей советует, соответственно кто-то сможет у себя в профиле это значение указать, какой в этом смысл, если пол может быть либо мужской, либо женский?

Какой смысл делать Поле с выбором пола если оно необязательно… и наверняка не будет использоваться в фильтре?

Алексей

Дело не в том, что оно обязательно, а в том, что оно изначально заполнено первым значением списка. Плюс у меня довольно много полей получилось и какие-то хотелось бы сделать необязательными, но со списками это невозможно. Можно ли как-то выводить списки в редактировании профиля, так как в фильтрах? Там как раз все списки заполнять необязательно. Или это сложно и нужно весь движок переписывать?
#6 30 января 2016 в 06:10
Вот здесь.
#7 30 января 2016 в 06:55
ponedelnik,
Первое поле сделайте пустым ' '
т.е. перед Муж и Жен просто пробел используйте.
Покажите код, подправлю
#8 30 января 2016 в 07:49

Дело не в том, что оно обязательно, а в том, что оно изначально заполнено первым значением списка.

ponedelnik
Так может тип поля чекбокс или радиокнопка сделать проще было бы?
#9 30 января 2016 в 08:52


Дело не в том, что оно обязательно, а в том, что оно изначально заполнено первым значением списка.

ponedelnik
Так может тип поля чекбокс или радиокнопка сделать проще было бы?

AndroS
А радио кнопка есть в инстант? scratch
Как вариант можете написать "Не указано", я так и сделал.
#10 30 января 2016 в 09:32
Я у себя сделал в файле html.helper.php в функции html_select добавил первое поле пустое вот так

  1. $html .= "\t".'<option value>'.htmlspecialchars('--- ВЫБОР ---').'</option>'."\n";
  2.  
И все работает. Если пусто то поле не выводится на сайте. Но в этом случае все селекты будут с первым полем --выбор-- пустым.
#11 30 января 2016 в 10:11
VonKruger, да, это похоже то, что мне нужно, но я не нашел функции html_select в html.helper.php. Там только вот такая:

  1. function html_select_range($name, $start, $end, $step, $add_lead_zero=false, $selected='', $attributes=array()){
  2.  
  3. $items = array();
  4.  
  5. for($i=$start; $i<=$end; $i+=$step){
  6. if ($add_lead_zero){
  7. $i = $i > 9 ? $i : "0{$i}";
  8. }
  9. $items[$i] = $i;
  10. }
  11.  
  12. return html_select($name, $items, $selected, $attributes);
  13.  
  14. }
Это она?
#12 30 января 2016 в 11:19
Нет не она смотрите внимательней

  1. /**
  2.  * Генерирует список опций
  3.  *
  4.  * @param string $name Имя списка
  5.  * @param array $items Массив элементов списка (значение => заголовок)
  6.  * @param string $selected Значение выбранного элемента
  7.  * @param array $attributes Массив аттрибутов тега
  8.  * @return html
  9.  */
  10. function html_select($name, $items, $selected = '', $attributes = array()){
  11.  
  12. $attr_str = html_attr_str($attributes);
  13. $class = isset($attributes['class']) ? ' class="'.$attributes['class'].'"' : '';
  14. $html = '<select name="'.$name.'" '.$attr_str.$class.'>'."\n";
  15.  
  16. $optgroup = false;
  17. $html .= "\t".'<option value>'.htmlspecialchars('--- ВЫБОР ---').'</option>'."\n";
  18. if($items && is_array($items)){
  19. foreach($items as $value => $title){
  20.  
  21. if(is_array($title)){
  22. if($optgroup !== false){
  23. $html .= "\t".'</optgroup>'."\n";
  24. $optgroup = false;
  25. }
  26. $optgroup = true;
  27. $html .= "\t".'<optgroup label="'.$title[0].'">'."\n";
  28. continue;
  29. }
  30.  
  31. $sel = ((string) $selected === (string) $value) ? 'selected' : '';
  32. $html .= "\t".'<option value="'.htmlspecialchars($value).'" '.$sel.'>'.htmlspecialchars($title).'</option>'."\n";
  33. }
  34. }
  35.  
  36. if($optgroup !== false){
  37. $html .= "\t".'</optgroup>'."\n";
  38. }
  39.  
  40. $html .= '</select>'."\n";
  41. return $html;
  42.  
  43. }
Перед то что вы показали выше!
#13 30 января 2016 в 12:20
Предустановленные значения:
0 | Пол не указан
1 | Мужской
2 | Женский
#14 30 января 2016 в 16:11
VonKruger, код я нашел, только он в template.helper.php, а не в html.helper.php. К сожалению не дает отредактировать профиль с селектором --ВЫБОР-- в списке, пишет Указано недопустимое значение, да и фильтре этот селектор появляется.

Всем, кто советует добавить дополнительное значение в виде не указано, пробел, прочерк и тд, спасибо, но мне этот вариант не подходит.

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