2016-09-02 2 views
0

opencart 전자 상거래 패키지의 백엔드에는 고객을 위해 바우처를 삽입 할 수있는 가능성이 있습니다. 그러나 바우처의 시작일과 종료일 (1 년 후)을 설정하는 표준은 없습니다. 그러므로 나는이 가능성을 포함하기 위해 voucher.tpl 템플릿을 채택했다. 쿠폰 시작일과 종료일을 입력 할 수있는 coupon.tpl과 완전히 동일하게 구현했습니다.날짜를 전송하지 않는 형태의 Datetimepicker

시작 날짜와 종료 날짜의 입력 필드는 datetimepicker 스크립트를 사용합니다. 캘린더 버튼 (이미지 1 참조)을 클릭하고 날짜가 나타나면 datepicker가 올바르게 표시됩니다.

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

양식을 제출할 때 date_start 및 date_end 필드는 비어 있지만 그 이유는 모르겠습니다. 감사합니다 SabKo – SabKo

+0

그렇다면이 코드는 항상 $ data [ 'date_start'] = $ this-> request-> post [ 'date_start'];'와 같이 실행됩니다. 그래서 그것은 javascript와 함께 뭔가 잘못되었을 것입니다. '$ ('form-voucher'). serialize()'라고 입력하고 올바른 데이터가있는 날짜 입력이 있는지 확인하십시오. – instead

답변

0

div의 datetime picker를 클래스 .date로 초기화하지만 클래스 나 ID를 사용하여 입력에 초기화해야합니다. 이 하나

<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

안녕하세요,이 가능성에 감사하지만 여전히 작동하지 않습니다. date_start 및 date_end 필드는 제출할 때 여전히 비어 있습니다. 또한 캘린더는 날짜 입력 필드를 클릭 할 때만 표시됩니다. 캘린더 심볼 버튼을 클릭하면 더 이상 작동하지 않습니다. – SabKo

+0

시작 날짜를 선택한 후 브라우저에서 실행하려고하면 다음 코드가 표시됩니다. $ ('# input-date-start'). val(); 양식 제출에 문제가있는 것보다 약간의 값이있는 경우. – kalym4ik

+0

또한 양식 작업 매개 변수가 올바른 opencart 컨트롤러 및 방법을 가리키고 있는지 확인하십시오. – kalym4ik

관련 문제