Jump to content
AlexTurner

Как правильно избавиться от обязательного поля "ИМЯ" в модуле

Recommended Posts

Posted (edited)

Помогите разобраться и сделать поле "ИМЯ" не обязательным для заполнения, есть файл

feedback.php

и сам вывод шаблона

 

{% if callback_active == 1 %}
                <li><a href="#modalFeedbackHeader" id="button_feedback" data-toggle="modal"><i class="fa fa-volume-control-phone"></i> <span class="hidden-xs hidden-sm hidden-md">{{ text_button_callback }}</span></a></li>
                {% endif %}
                {% if callback_active == 1 %}
                <div class="modal fade" id="modalFeedbackHeader" tabindex="-1" role="dialog" aria-labelledby="modalFeedbackHeaderLabel" aria-hidden="true">
                  <div class="modal-dialog" role="document">
                    <div class="modal-content">
                      <div class="modal-body">
                        <div style="display:inline-block; width: 100%; text-align:right;">
                          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                          </button>
                        </div>
                        <form class="form-horizontal" id="form-feedback-header">
                          <div class="form-group required">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-name">{{ entry_name }}</label>
                              <input type="text" name="name" value="{{ name_callback }}" id="input-name" class="form-control" />
                            </div>
                            <div class="col-sm-12">
                              <label class="control-label" for="input-phone">{{ entry_phone }}</label>
                              <input type="text" name="phone" value="{{ phone_callback }}" id="input-phone" class="form-control" />
                            </div>
                          </div>
                        </form>
                        <button type="button" id="button_send_feedback_header" data-loading-text="{{ text_loading }}"  class="btn btn-primary">{{ text_send }}</button>
                      </div>
                    </div>
                  </div>
                </div>
                <script>
                  $('#button_send_feedback_header').on('click', function () {
                    $.ajax({
                      url: 'index.php?route=common/header/write',
                      type: 'post',
                      dataType: 'json',
                      data: $("#form-feedback-header").serialize(),
                      beforeSend: function () {
                        $('#button_send_feedback_header').button('loading');
                      },
                      complete: function () {
                        $('#button_send_feedback_header').button('reset');
                      },
                      success: function (json) {
                        $('.alert-success, .alert-danger').remove();
                        if (json['error']) {
                          $('#form-feedback-header').after('<div class="alert alert-danger" style="margin:20px 0;"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>');
                        }
                        if (json['success']) {
                          $('#form-feedback-header').after('<div class="alert alert-success" style="margin:20px 0;"><i class="fa fa-check-circle"></i> ' + json['success'] + '</div>');
                          $('input[name=\'name\']').val('');
                          $('input[name=\'phone\']').val('');
                        }
                      }
                    });
                  });
                </script>
                {% endif %}

 

я пытался убрать выражение в php :

 

удалил:

$data['error_name'] =  $this->language->get('error_name');
if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {
                $json['error'] = $data['error_name'];
            }

но он все равно не пропускает

 

потом удалил из шаблона это :

 

 <div class="col-sm-12">
                              <label class="control-label" for="input-name">{{ entry_name }}</label>
                              <input type="text" name="name" value="{{ name_callback }}" id="input-name" class="form-control" />
                            </div>

 

Тоже эффекта ноль, подскажите, что я упускаю? 

feedback.php

Edited by AlexTurner

Share this post


Link to post
Share on other sites

Убрав, это:

if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {
  $json['error'] = $data['error_name'];
}

Проверка на имя уберется.

 

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

Share this post


Link to post
Share on other sites
44 минуты назад, AlexTurner сказал:

<div class="form-group required">

у вас как бы все поля формы объявлены "обязательные". задайте required для полей отдельно

Share this post


Link to post
Share on other sites
6 часов назад, bulldozer323 сказал:

Убрав, это:


if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {
  $json['error'] = $data['error_name'];
}

Проверка на имя уберется.

 

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

 

Именно в хидере, я убрал это и поменял поле required

теперь это выглядит вот так :

 

<form class="form-horizontal" id="form-feedback-header">
                          <div class="form-group">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-name">{{ entry_name }}</label>
                              <input type="text" name="name" value="{{ name_callback }}" id="input-name" class="form-control" />
                            </div>
                            </div>
                            <div class="form-group required">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-phone">{{ entry_phone }}</label>
                              <input type="text" name="phone" value="{{ phone_callback }}" id="input-phone" class="form-control" />
                            </div>
                          </div>
                        </form>

 

Я разделил поля forn-group, убрал required у поля с именем, а телефон оставил прежним

 

Но после нажатия на отправку - ничего не происходит, кеш и все почистил, просто не нажимается кнопка, словно он все еще проверяет и что-то еще не сделано

Share this post


Link to post
Share on other sites
1 час назад, AlexTurner сказал:

 

Именно в хидере, я убрал это и поменял поле required

теперь это выглядит вот так :

 


<form class="form-horizontal" id="form-feedback-header">
                          <div class="form-group">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-name">{{ entry_name }}</label>
                              <input type="text" name="name" value="{{ name_callback }}" id="input-name" class="form-control" />
                            </div>
                            </div>
                            <div class="form-group required">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-phone">{{ entry_phone }}</label>
                              <input type="text" name="phone" value="{{ phone_callback }}" id="input-phone" class="form-control" />
                            </div>
                          </div>
                        </form>

 

 

Если речь идёт про хидер, сделайте тоже самое в модификаторы который идёт в комплекте с модулем

Share this post


Link to post
Share on other sites

image.thumb.png.ef4fe2f4b2c017dbdf8736cdbccda262.png

 

Там я тоже сделал, вот скриншот модификатора 

Share this post


Link to post
Share on other sites

Итак, вот что я сделал : файле feedback.php

Я закомментировал строку 

/*if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {
                $json['error'] = $data['error_name'];
            }*/

и удалил эту же строку в модификаторе

 

так как у меня не выводилось поле само, я самостоятельно вписал его в header.twig, а именно :

 

{% if callback_active == 1 %}
                <div class="modal fade" id="modalFeedbackHeader" tabindex="-1" role="dialog" aria-labelledby="modalFeedbackHeaderLabel" aria-hidden="true">
                  <div class="modal-dialog" role="document">
                    <div class="modal-content">
                      <div class="modal-body">
                        <div style="display:inline-block; width: 100%; text-align:right;">
                          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                          </button>
                        </div>
                        <form class="form-horizontal" id="form-feedback-header">
                          <div class="form-group">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-name">{{ entry_name }}</label>
                              <input type="text" name="name" value="{{ name_callback }}" id="input-name" class="form-control" />
                            </div>
                            </div>
                            <div class="form-group required">
                            <div class="col-sm-12">
                              <label class="control-label" for="input-phone">{{ entry_phone }}</label>
                              <input type="text" name="phone" value="{{ phone_callback }}" id="input-phone" class="form-control" />
                            </div>
                          </div>
                        </form>
                        <button type="button" id="button_send_feedback_header" data-loading-text="{{ text_loading }}"  class="btn btn-primary">{{ text_send }}</button>
                      </div>
                    </div>
                  </div>
                </div>
                <script>
                  $('#button_send_feedback_header').on('click', function () {
                    $.ajax({
                      url: 'index.php?route=common/header/write',
                      type: 'post',
                      dataType: 'json',
                      data: $("#form-feedback-header").serialize(),
                      beforeSend: function () {
                        $('#button_send_feedback_header').button('loading');
                      },
                      complete: function () {
                        $('#button_send_feedback_header').button('reset');
                      },
                      success: function (json) {
                        $('.alert-success, .alert-danger').remove();
                        if (json['error']) {
                          $('#form-feedback-header').after('<div class="alert alert-danger" style="margin:20px 0;"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>');
                        }
                        if (json['success']) {
                          $('#form-feedback-header').after('<div class="alert alert-success" style="margin:20px 0;"><i class="fa fa-check-circle"></i> ' + json['success'] + '</div>');
                          $('input[name=\'name\']').val('');
                          $('input[name=\'phone\']').val('');
                        }
                      }
                    });
                  });
                </script>
                {% endif %}

Поменяв при этом поле form-group required на form-group

 

Сделал тоже самое в модификаторе на всякий случай, обновил все. Но кнопка не срабатывает( однако если туда вписать имя, то он срабатывает

Share this post


Link to post
Share on other sites

Измените:

url: 'index.php?route=common/header/write',

На:

url: 'index.php?route=extension/module/feedback/write',

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.