2016-10-15 3 views
0

모든 날짜가 datetime 형식이므로 DateRangePicker가 datetime 입력에 사용하는 텍스트 입력을 변환하려고 시도하고 있습니다. 다음과 같이 내 코드는 다음과 같습니다daterangepicker 텍스트를 datetime 입력으로 변환

<!-- Include Required Prerequisites --> 
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script> 
<script type="text/javascript" src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script> 
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap/latest/css/bootstrap.css" /> 

<!-- Include Date Range Picker --> 
<script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script> 
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" /> 

<script type="text/javascript"> 
    $(function() { 
    $('input[name="date_start"]').daterangepicker({ 
     autoUpdateInput: false, 
     locale: { 
      cancelLabel: 'Clear' 
     }, 
     format: "DD/MM/YYYY", 
     startDate: new Date(new Date().getTime() + 24 * 60 * 60 * 1000), 
     endDate: new Date(new Date().getTime() + 24 * 60 * 60 * 1000), 
     minDate: new Date(new Date().getTime() + 24 * 60 * 60 * 1000) 
    }); 

    $('input[name="date_start"]').on('apply.daterangepicker', function(ev, picker) { 
     $(this).val(picker.startDate.format('DD/MM/YYYY') + ' - ' + picker.endDate.format('DD/MM/YYYY')); 
     $("#date_start").val(picker.startDate.format('DD/MM/YYYY')); 
     $("#date_end").val(picker.endDate.format('DD/MM/YYYY')); 
    }); 

    $('input[name="date_start"]').on('cancel.daterangepicker', function(ev, picker) { 
     $(this).val(''); 
    }); 
    }); 
</script> 

<div class="container" style="margin-top: 70px;"> 
    <?= $this->Flash->render('auth') ?> 
    <?php $this->Form->templates([ 
     'inputContainer' => '<div class="form-group">{{content}}</div>', 
     'inputContainerError' => '<div class="error" style="color:red;">{{content}}{{error}}</div>' 
    ]);?> 
    <div class="col-sm-2"> 
    </div> 
    <div class="col-sm-8"> 
     <div class="container col-sm-12" style="border-radius: 10px; border: 1px solid;" > 
      <?= $this->Form->create() ?> 

      <div class="col-sm-6"> 
       <?= $this->Form->input('date_start', ['class'=>'form-control', 'type'=>'text', 'label'=>'Session Dates', 
       'placeholder'=>'Please select the start and end dates for your session.']);?> 
      </div> 

      <input type="text" name="date_start" id="date_start" value="" /> 
      <input type="text" name="date_end" id="date_end" value="" /> 

         <input id='date_start' class='form_control' name='date_start'/> 
      <input id='date_end' class='form_control' name='date_end'/> 

      <script> 
       <?php $date_starttext ?> = document.getElementById('date_start').value; 
       <?php $date_endtext ?> = document.getElementById('date_end').value; 
       <?php $date_startdt = DateTime::createFromFormat('d/M/Y', $date_starttext)->format('Y-M-d'); ?> 
       <?php $date_enddt = DateTime::createFromFormat('d/M/Y', $date_endtext)->format('Y-M-d'); ?> 
      </script> 

      <div> 
      <?= $this->Form->input('sessions.0.date_start', ['class'=>'form-control', 'type'=>'hidden', 'value'=>$date_startdt]); ?> 
      </div> 
      <div> 
      <?= $this->Form->input('sessions.0.date_end', ['class'=>'form-control', 'type'=>'hidden', 'value'=>$date_enddt]);?> 
      </div> 

      <input type="text" name="sessions.0.date_start" id="sessions.0.date_start" value="" /> 
      <input type="text" name="date_start5" id="sessions.0.date_start" value="" /> 
      <input type="text" name="sessions.0.date_end" id="date_end5" value="" /> 

      <?= $this->Form->end() ?> 
      </div> 
      </div> 
      <div class="col-sm-2"> 
      </div> 
      </div> 

을하지만, 나는이 코드 페이지를로드 할 때, 나는이 오류 받고 있어요 :

Call to a member function format() on boolean

그리고 오류 메시지는이 라인을 참조 :

<?php $date_startdt = DateTime::createFromFormat('d/M/Y', '$date_starttext')->format('Y-M-d'); ?> 

나는 무엇이 잘못되었는지 잘 모릅니다. 아마 DateTime : createFromFormat 아래에 동일한 오류가 있습니다.

+0

이것은 '$ date_starttext'' 문제입니다. 작은 따옴표는 변수를 대체하지 않습니다. 값은 따옴표를 제거하거나 큰 따옴표를 사용합니다.'$ date_endtext''에 대해 동일하게 수행합니다. – Viney

+0

불행히도 아무 것도 변경되지 않았습니다. – mistaq

답변

0

설명서에 따르면 DateTime :: createFromFormat 메서드는 새 DateTime 인스턴스를 반환하거나 실패하면 FALSE를 반환하므로 잘못된 문자열을 구문 분석에 전달하고 메서드가 부울 값 false를 반환합니다.