2012-02-16 6 views
6

मैं एक रूप है, जो में इनपुट क्षेत्र इसDatepicker yy एम एम डी प्रारूप के रूप में डेटा भंडारण है

<div class="row"> 
    <?php echo $form->labelEx($model,'due_date'); ?> 
    <?php 
    $this->widget('zii.widgets.jui.CJuiDatePicker', 
     array(
      'attribute'=>'due_date', 
      'model'=>$model, 
      'options' => array(
           'mode'=>'focus', 
           'dateFormat'=>'d MM, yy', 
           'showAnim' => 'slideDown', 
          ), 
    'htmlOptions'=>array('size'=>30,'class'=>'date'), 
     ) 
    ); 
    ?> 
    <?php echo $form->error($model,'due_date'); ?> 
    </div> 

मैं मॉडल file.It में इस फार्म को बचाने बना दिया है की तरह है इस

की तरह कुछ है
protected function beforeSave() 
    { 
    $this->due_date=date('Y-m-d', strtotime(str_replace(",", "", $this->due_date))); 
    return TRUE; 
    } 

CJuiDatePicker का उपयोग दिनांक पिकर से डेटा को सहेजने के लिए किया जाता है। यह सहेजने के समय डी एमएम वाई प्रारूप में तारीख दिखा रहा है, लेकिन जब मैं फॉर्म को अपडेट करने जा रहा हूं तो दिनांक वाईएम एमएम प्रारूप में दिखा रहा है। अगर मैं पहले सेव() की डेटफॉर्मेट बदल रहा हूं, तो यह तिथि संग्रहीत कर रहा है 0000-00-00 मूल्यों में प्रारूप। कोई अन्य दिनांक मान संग्रहीत नहीं कर रहे हैं। क्या कोई मुझे बता सकता है कि मैं गलत कहां कर रहा हूं? कोई भी मदद और सुझाव अत्यधिक प्रशंसनीय होंगे।

+0

मैं काफी समझ में नहीं आता कि तुम क्या वर्णन कर रहे हैं। क्या आप अधिक विशिष्ट हो सकते हैं? – Jon

+0

क्या आपने इसे सहेजने से पहले इसे बदलने के बाद $-> due_date की वैली को डंप करने का प्रयास किया था? लॉग आउट करें और जांचें कि मान सही है। –

+0

@ जोन, मुझे लगता है कि वह कह रहा है कि जब वह मॉडल को अपडेट करने का प्रयास करता है तो YYYY-MM-DD प्रारूप में दिनांक फ़ील्ड दिखाई देता है (पॉप्युलेट)। –

उत्तर

8

इस प्रयास करें:

protected function afterFind(){ 
    parent::afterFind(); 
    $this->due_date=date('d F, Y', strtotime(str_replace("-", "", $this->due_date)));  
} 

protected function beforeSave(){ 
    if(parent::beforeSave()){ 
     $this->due_date=date('Y-m-d', strtotime(str_replace(",", "", $this->due_date))); 
     return TRUE; 
    } 
    else return false; 
} 

अपने मॉडल के लिए ऊपर कोड जोड़ें। और यह काम करना चाहिए।

+1

का पालन करें मुझे बताएं कि क्या कोई स्पष्टीकरण आवश्यक है। –

+1

धन्यवाद @ bool.dev..यह मेरे लिए काम किया। – NewUser

+0

ठीक है, यह काम करता है, जब आप उन्हें ओवरराइड कर रहे हैं, तो 'पैरेंट' विधियों को कॉल करना याद रखें, ताकि ईवेंट ठीक से उठाए जा सकें। इसके बाद भी हम जिस तरीके से चाहते थे उसमें डेटा को दोबारा सुधारने में मदद करते हैं, जाहिर है कि आप इसे दृश्य में ही कर सकते थे, लेकिन मैंने सोचा कि यह बेहतर है। –

3

मैं यूरोपीय तिथियाँ, की तरह स्वरूपित के साथ एक समान समस्या थी: 'dd/mm/yyyy', और इस मैं क्या उपयोग है:

मॉडल नियमों में:

public function rules() 
{ 
    // NOTE: you should only define rules for those attributes that 
    // will receive user inputs. 
    return array(
     array('date','date','format'=>Yii::app()->locale->getDateFormat('medium')), 

क्योंकि 'मध्यम' लोकेल प्रारूप मेरी सत्यापन आवश्यकताओं को फिट करता है।

रूप में मैं का उपयोग करें:

  <?php echo $form->labelEx($model,'date'); ?> 
      <?php 
      $this->widget('zii.widgets.jui.CJuiDatePicker', array(
       //'name'=>'date', 
       'model'=>$model, 
       'attribute'=>'date', 
       'language'=>Yii::app()->language=='es' ? 'es' : null, 
       'options'=>array(
        'changeMonth'=>'true', 
        'changeYear'=>'true', 
        'yearRange' => '-99:+2',   
        'showAnim'=>'fold', // 'show' (the default), 'slideDown', 'fadeIn', 'fold' 
        'showOn'=>'button', // 'focus', 'button', 'both' 
        'dateFormat'=>'dd/mm/yy', 
        'value'=>date('dd/mm/yy'), 
        'theme'=>'redmond', 
        'buttonText'=>Yii::t('ui','Select form calendar'), 
        'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.gif', 
        'buttonImageOnly'=>true, 
       ), 
       'htmlOptions'=>array(
        'style'=>'vertical-align:top', 
        'class'=>'span2', 
       ), 
      ));?> 
      <?php echo $form->error($model,'date'); ?> 

और MySQL प्रारूप पर वापस रूपांतरण, को बचाने के लिए, तिथियों की तुलना ...:

$date=strftime('%Y-%m-%d', strtotime(str_replace("/", "-", $this->date))); 

आशा इस मदद करता है।

0
इस

मेरे लिए काम किया:

public function beforeSave() 
{ 
    $this->due_date = date('Y-m-d', strtotime($this->due_date)); 
    return parent::beforeSave(); 
} 
संबंधित मुद्दे