2016-09-02 3 views
0

На бэкэнд моего пакета электронной коммерции, есть возможность вставить ваучеры для клиентов. Тем не менее, нет стандартной возможности установить дату начала и окончания (1 год спустя) для ваучера. Поэтому я применил шаблон voucher.tpl, чтобы включить эту возможность. Я реализовал это полностью так же, как и для coupon.tpl, где есть возможность ввести дату начала и дату окончания.Datetimepicker в форме, не переносящей дату

Поле ввода для даты начала и окончания даты использует сценарий datetimepicker. Датчик даты отображается правильно, когда я нажимаю кнопку календаря (см. Изображение 1), и дата появляется.

image1

Даты используется в форме, но, к сожалению, данные не похожи, передаются с формой, когда кнопка сохранения нажата. Я не вижу разницы с страницей coupon.tpl, где все работает правильно. Я потратил уже много часов на создание ошибки, но пока не удалось. Может ли кто-нибудь помочь мне на моем пути? Спасибо, SabKo

voucher.tpl имеет следующий код:

<div id="content"> 
<div class="page-header"> 
    <div class="container-fluid"> 
    <div class="pull-right"> 
     <button type="submit" form="form-voucher" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary"><i class="fa fa-save"></i></button> 
     <a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a> 
    </div> 
    <h1><?php echo $heading_title; ?></h1> 
    <ul class="breadcrumb"> 
     <?php foreach ($breadcrumbs as $breadcrumb) { ?> 
     <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> 
     <?php } ?> 
    </ul> 
    </div> 
</div> 
<div class="container-fluid"> 
    <?php if ($error_warning) { ?> 
    <div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> <?php echo $error_warning; ?> 
    <button type="button" class="close" data-dismiss="alert">&times;</button> 
    </div> 
    <?php } ?> 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h3 class="panel-title"><i class="fa fa-pencil"></i> <?php echo $text_form; ?></h3> 
    </div> 
    <div class="panel-body"> 
     <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-voucher" class="form-horizontal"> 
     <div class="tab-content"> 
      <div class="tab-pane active" id="tab-general"> 
      <div class="form-group required"> 
       <label class="col-sm-2 control-label" for="input-code"><span data-toggle="tooltip" title="<?php echo $help_code; ?>"><?php echo $entry_code; ?></span> 
       </label> 
       <div class="col-sm-10"> 
       <input type="text" name="code" value="<?php echo $code; ?>" placeholder="<?php echo $entry_code; ?>" id="input-code" class="form-control" /> 
       <?php if ($error_code) { ?> 
       <div class="text-danger"><?php echo $error_code; ?></div> 
       <?php } ?> 
       </div> 
      </div> 
      <div class="form-group required"> 
       <label class="col-sm-2 control-label" for="input-from-name"><?php echo $entry_from_name; ?> 
       </label> 
       <div class="col-sm-10"> 
       <input type="text" name="from_name" value="<?php echo $from_name; ?>" placeholder="<?php echo $entry_from_name; ?>" id="input-from-name" class="form-control" /> 
       <?php if ($error_from_name) { ?> 
       <div class="text-danger"><?php echo $error_from_name; ?></div> 
       <?php } ?> 
       </div> 
      </div> 
      <div class="form-group required"> 
       <label class="col-sm-2 control-label" for="input-to-name"><?php echo $entry_to_name; ?></label> 
       <div class="col-sm-10"> 
       <input type="text" name="to_name" value="<?php echo $to_name; ?>" placeholder="<?php echo $entry_to_name; ?>" id="input-to-name" class="form-control" /> 
       <?php if ($error_to_name) { ?> 
       <div class="text-danger"><?php echo $error_to_name; ?></div> 
       <?php } ?> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label class="col-sm-2 control-label" for="input-amount"><?php echo $entry_amount; ?></label> 
       <div class="col-sm-10"> 
       <input type="text" name="amount" value="<?php echo $amount; ?>" placeholder="<?php echo $entry_amount; ?>" id="input-amount" class="form-control" /> 
       <?php if ($error_amount) { ?> 
       <div class="text-danger"><?php echo $error_amount; ?></div> 
       <?php } ?> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label class="col-sm-2 control-label" for="input-date-start"><?php echo $entry_date_start; ?></label> 
       <div class="col-sm-3"> 
       <div class="input-group date"> 
        <input type="text" name="date_start" value="<?php echo $date_start; ?>" placeholder="<?php echo $entry_date_start; ?>" data-date-format="YYYY-MM-DD" id="input-date-start" class="form-control" /> 
        <span class="input-group-btn"> 
        <button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button> 
        </span></div> 
       </div> 
      </div> 

      <div class="form-group"> 
       <label class="col-sm-2 control-label" for="input-date-end"><?php echo $entry_date_end; ?></label> 
       <div class="col-sm-3"> 
       <div class="input-group date"> 
        <input type="text" name="date_end" value="<?php echo $date_end; ?>" placeholder="<?php echo $entry_date_end; ?>" data-date-format="YYYY-MM-DD" id="input-date-end" class="form-control" /> 
        <span class="input-group-btn"> 
        <button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button> 
        </span></div> 
       </div> 
      </div> 
      <?php if ($voucher_id) { ?> 
      <div class="tab-pane" id="tab-history"> 
      <div id="history"></div> 
      </div> 
      <?php } ?> 
     </div> 
     </form> 
    </div> 
    </div> 
</div> 
<script type="text/javascript"><!-- 
    $('.date').datetimepicker({ 
    pickTime: false 
    }); 
    //--></script> 
</div> 

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

if (isset($this->request->post['date_start'])) { 
     $data['date_start'] = $this->request->post['date_start']; 
    } elseif (!empty($voucher_info)) { 
     $data['date_start'] = ($voucher_info['date_start'] != '0000-00-00' ? $voucher_info['date_start'] : ''); 
    } else { 
     $data['date_start'] = date('Y-m-d', time()); 
    } 

    if (isset($this->request->post['date_end'])) { 
     $data['date_end'] = $this->request->post['date_end']; 
    } elseif (!empty($voucher_info)) { 
     $data['date_end'] = ($voucher_info['date_end'] != '0000-00-00' ? $voucher_info['date_end'] : ''); 
    } else { 
     $data['date_end'] = date('Y-m-d', strtotime('+1 month')); 
    } 
+0

Я не знаком с OpenCart, но Вы можете попробовать 'var_dump ($ _ POST);' и проверить, есть ли DATE_START и date_end. – instead

+0

Поля даты_start и date_end пусты, когда форма отправлена, но я понятия не имею, почему. С уважением SabKo – SabKo

+0

Хорошо, тогда этот код всегда выполняется '$ data ['date_start'] = $ this-> request-> post ['date_start'];'. Так что, должно быть, что-то не так с javascript. Пожалуйста, попробуйте ввести консоль: '$ ('# form-voucher'). Serialize()' и посмотреть, есть ли входы даты с правильными данными. – instead

ответ

0

Вы инициализируете свой сборщик datetime на div с классом .date, но вы должны инициализировать его на входах с их классами или идентификаторами.

заменить этот код:

<script type="text/javascript"><!-- 
    $('.date').datetimepicker({ 
    pickTime: false 
    }); 
    //--></script> 

с этим:

<script type="text/javascript"><!-- 
$('#input-date-start').datetimepicker({ 
    pickTime: false 
    }); 
    $('#input-date-end').datetimepicker({ 
    pickTime: false 
    }); 
    //--></script> 
+0

Здравствуйте, спасибо за эту возможность, но все равно не работаем. Поля даты_start и date_end по-прежнему пусты при отправке. Кроме того, календарь показывается только тогда, когда я нажимаю в поле ввода даты. Он больше не работает, когда я нажимаю кнопку символа календаря. – SabKo

+0

После того, как вы выбрали дату начала, попробуйте запустить в консоли своего браузера следующий код: $ ('# input-date-start'). Val(); , если будет некоторая ценность, чем проблема с формой submit. – kalym4ik

+0

Также проверьте параметр действия формы, указывает ли он на правильный контроллер и метод opencart – kalym4ik

Смежные вопросы