За последние 24 часа нас посетили 16307 программистов и 1581 робот. Сейчас ищут 1542 программиста ...

Изменить тип поля text на Select

Тема в разделе "PHP для новичков", создана пользователем Paka, 20 авг 2016.

  1. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Доброго времени всем суток. Помог сестре с бесплатным сайтом по стрижке, а она попросила посмотреть возможно ли в плагине Wordpress изменить поле с типа text на select, с возможностью выбора 3 значений "Стрижка", "Бритье", "Стрижка+Бритье". Опыта маловато вот и пришел за помощью.
    Насколько я понял за вывод этого поля отвечает вот этот участок кода.
    PHP:
    1.  <div id="field_type_reservation_field2" class="field_types">
    2.                         <!-- additional 2 -->
    3.                         <div class="booking_float_left booking_width_20p booking_height_30 booking_line_30"><?php echo $bookingLangObj->getLabel("RESERVATION_ADDITIONAL_FIELD2"); ?>:</div>
    4.                         <div class="booking_float_left booking_margin_l_10">
    5.                                 <input type="hidden" name="reservation_field_name[]" value="reservation_field2" />
    6.                                 <select name="field_type[]">
    7.                                     <option value="text" <?php if($bookingSettingObj->getReservationFieldType('reservation_field2')== 'text') { echo 'selected'; } ?>><?php echo $bookingLangObj->getLabel("FORM_FIELDS_TYPE_TEXT"); ?></option>
    8.                                     <option value="textarea" <?php if($bookingSettingObj->getReservationFieldType('reservation_field2')== 'textarea') { echo 'selected'; } ?>><?php echo $bookingLangObj->getLabel("FORM_FIELDS_TYPE_AREA"); ?></option>
    9.                                 </select>
    10.                         </div>
    11.                         <div class="booking_cleardiv"></div>
    12.                     </div>
    в админке плагина можно указать выводить ли это поле. Можно ли как то изменить что бы при выборе в админке этого поля"additional 2", оно давало type select с теми 3 значенями (а сами значения прописать в коде плагина). Заранее спасибо за ответ.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Это часть кода плагина без изменений?
     
  3. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Да, это часть кода дополнительного поля №2. В том Php файле описаны все поля для формы бронирования.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Там в админке, что нельзя просто добавить варианты для этого select?
     
    Paka нравится это.
  5. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    В админке можно указать для этого(и всех остальных из формы бронирования) поля только text/textarea.
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.575
    Симпатии:
    1.759
    А что за плагин, для начала?
     
  7. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Booking Calendar WP Plugin
    Версия 4.1.6 | Автор: Wachipi Srl
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Может тогда взять другой плагин с select?
     
  9. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Я пересмотрел все плагины такого типа, у всех text поля. Да и этот уже прописан для темы wordpress с стилями. Так что все очень сложно и лучше оставить затею замену text/textArea на select?
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    На это нужно потратить время, тебе придётся ждать, может кто это сделает, или самому учить программирование, чтобы ты смог разобраться.
    Ещё в разделе free-lance могут за деньги сделать.
    --- Добавлено ---
    Есть ссылка где можно посмотреть на работу плагина?
     
  11. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    http://www.barbershopgarage.com.ua/book/
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Какие формы/поля были добавлены в админ панели?
     
  13. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    [​IMG]
    --- Добавлено ---
    Я думал что можно как то расширить список например просто добавить к полю 2, еще 1 вариацию что то типо такого)
    PHP:
    1. <option value="select" <?phpif($bookingSettingObj->getReservationFieldType('reservation_field2')=='select'){echo'selected';}?>><?phpecho$bookingLangObj->getLabel("FORM_FIELDS_TYPE_SELECT");?></option>
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Думаю что можно сделать не красиво, вот там где клиент видит поле "Укажите услугу(Стрижка, Бритье, Бритье+Стрижка)" можно поменять input тег на select.
    Для этого нужно найти код который отвечает за вывод этих полей там где их видит клиент.
    По идее там цикл, и можно добавить простое условие, при имени формы reservation_field2 вместо input или textarea будем выводить select.
    Найди этот код, дальше подумаем как сделать.
     
    Paka нравится это.
  15. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Это кусок кода из фала index.php дирректории public на первый взгляд он и выводит это поле

    PHP:
    1. <!-- additional 2 -->
    2.                 <?php
    3.                 if($bookingSettingObj->getReservationFieldType('reservation_field2') == 'text') {
    4.                     ?>
    5.                     <div class="booking_float_left booking_margin_r_2p booking_width_23p">
    6.                         <div><?php echo $bookingLangObj->getLabel("INDEX_RESERVATION_ADDITIONAL_FIELD2"); ?></div>
    7.                         <input type="text" name="reservation_field2" class="booking_field_input_custom booking_width_90p booking_border_none" <?php if(in_array("reservation_field2",$bookingSettingObj->getMandatoryFields())) { echo 'tmt:required="true" tmt:message="'.$bookingLangObj->getLabel("INDEX_RESERVATION_ADDITIONAL_FIELD2_ALERT").'"'; }?>/>
    8.                     </div>
    9.                     <?php
    10.                 } else if($bookingSettingObj->getReservationFieldType('reservation_field2') == 'textarea') {
    11.                     ?>
    12.                     <div class="booking_float_left booking_margin_r_2p booking_width_98p">
    13.                         <div><?php echo $bookingLangObj->getLabel("INDEX_RESERVATION_ADDITIONAL_FIELD2"); ?></div>
    14.                         <textarea name="reservation_field2" class="booking_field_input_custom booking_width_98p height_25 booking_border_none" <?php if(in_array("reservation_field2",$bookingSettingObj->getMandatoryFields())) { echo 'tmt:required="true" tmt:message="'.$bookingLangObj->getLabel("INDEX_RESERVATION_ADDITIONAL_FIELD2_ALERT").'"'; }?>></textarea>
    15.                     </div>
    16.                     <?php
    17.                 }
    18.                 ?>
    19.  
    20.                 <?php
    21.             } else {
    22.                 ?>
    23.                 <input type="hidden" name="reservation_field2" value="" />
    24.                 <?php
    25.             }
    26.  
    27.  
    28.  
    29.             if(in_array("reservation_field3",$bookingSettingObj->getVisibleFields())) {
    30.                 ?>
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.575
    Симпатии:
    1.759
    Вообще, по идее, если input поменять на select с тем же именем, и в option value писать то, что вводилось от руки, сервер ничего заметить не должен
     
    Paka и denis01 нравится это.
  17. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Paka можешь строчку 7 удалить и влепить туда select с атрибутом name="reservation_field2" ну а там в option уже в value атрибуте пиши что хочешь в базу чтобы попало.
     
    Paka нравится это.
  18. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    PHP:
    1. <select id="company" name="reservation_field2">
    2.       <option value="Стрижка">Стрижка</option>
    3.       <option value="Бритье">Бритье</option>
    4.       <option value="Бритье+Стрижка">Бритье + Стрижка</option>
    5.    </select>
    Вставил вместо 7 строчки и все завертелось, теперь осталось сделать ее чуть в стиль и покрасивее. Спасибо силе php.ru !:D
     
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    смотри в исходный код браузера, как она была оформлена на странице и просто допиши.