2014-09-28 14 views
13

Yii Framework 2.0 kullanıyorum. Bir tarih için bir metin giriş alanı olan bir formum var. Yii Framework 2.0'ı Sınıf yii \ validators \ Validator hakkında okudum ve bir model sınıfında kurallarının() yönteminin içinde kullanılabilen tüm doğrulayıcı anahtarları bildim. tarih anahtarını aşağıdaki gibi kullandığımda, hiçbir şey doğrulanmaz. Bu, hala girdi alanına bazı metinler koyabildiğim ve formu gönderebileceğim anlamına geliyor. Ben boolean veya email içine değiştiğindeYii Framework 2.0 Kurallar Tarih Validator

, ben giriş alanına yanlış bir şey koyduğunuzda çok iyi doğrular olduğunu görebiliyordu. Yii Framework 2.0 ile giriş alanının içindeki tarih değerini nasıl doğrulayabilirim?

Benim kurallarım() yöntemi:

public function rules() 
{ 
    return [ 
     [['inputfield_date'], 'required'], 
     [['inputfield_date'], 'safe'], 
     [['inputfield_date'], 'date'], 
    ]; 
} 

Bence sayfa:

<?php $form = ActiveForm::begin(); ?> 
    <?= $form->field($model, 'inputfield_date')->textInput(); ?> 
<?php ActiveForm::end(); ?> 
+0

Lütfen form dosyanızdaki kodun kodunu modelinize ekledikten sonra tam kural dizisini gönderin ... – webeno

+0

Sadece sorularımın kodu() yönteminin koduyla ve içindeki formla düzenledim. görünüm sayfası. Umarım yardım edebilirsin. Şimdiden teşekkürler! –

+0

Bu sorunu çözebildiğin bir ihtimal var mı? Aynı sorunu yaşıyorum – NEWBIE

cevap

1

Değil% 100 o Yii2 ne kadar emin değilim, ama böyle bakmak zorunda Yii1 dışarı gidiyor. ..

array('org_datetime', 'date', 'format'=>'yyyy-M-d H:m:s'), 

(kaynak: http://www.yiiframework.com/wiki/56/#hh8)

... Ben Yii2 böyle bir şey bakmak zorunda diyebiIirim:

['shopping_date', 'date', 'format' => 'yyyy-M-d H:m:s'], 
+0

Ben de aynısını yaptığınız gibi yaptım, ama yukarıdaki kod örneği ile hiçbir şeyi doğrulamadı. Tarih seçicimin tarih biçimini 'Y-m-d' olarak yapılandırdığımı unutmayın.Tam olarak tarih biçiminiz gibi olmalısınız 'yyyy-M-d H: m: s'? –

+0

no, bu biçim bir örnekti, Yii belgelerine bir göz atın, buradan başlamak isteyebilirsiniz: http://www.yiiframework.com/doc-2.0/yii-helpers-formatconverter.html – webeno

+0

Teşekkür ederim, ancak tarih formatıyla veya bir formatı diğerine dönüştürme ile ilgili değildir. Bu işini yapmayan 'tarih' validator hakkındadır. Kod örneğiniz çalışmalı, ancak çalışmıyor. Ben sadece o iş var olması Yii Framework 2.0 –

6

çözüm çalışmak. Benim kurallarım() yöntemi:

public function rules() 
{ 
    return [ 
    [['inputfield_date'], 'required'], 
    [['inputfield_date'], 'safe'], 
    ['inputfield_date', 'date', 'format' => 'yyyy-M-d H:m:s'], 
    ]; 
} 

görünüm Sayfası formu: kontrolörde

<?php $form = ActiveForm::begin(); ?> 
    <?= $form->field($model, 'inputfield_date')->textInput(); ?> 
<?php ActiveForm::end(); ?> 

Benim yöntemi: tarih biçimini nasıl tanımladığına bağlı olduğunu

if ($model->load(Yii::$app->request->post()) && $model->validate()): 
     if($model->save()): 
      // some other code here..... 
     endif; 
endif; 

Not senin tarih formatı giriş alanı. Bir kez daha bunun bir AJAX doğrulayıcı olmadığını unutmayın. Gönder düğmesine tıkladıktan sonra, tarih olmayan başka bir şey girerseniz hata mesajını göreceksiniz.

+1

Bu şansı denedim. aynı şey, dateValidator'ın form gönderildikten sonra bile geçerli olmadığını gösterir – NEWBIE

21

Çocuk Yii belgeleri emmek. Bir örnek bile vermiyorlar. O'Connor'ın cevabından çalışarak, 2015-09-11 biçimindeki değeri atadığım için bu benim için çalıştı. format veya timestampAttribute gelen veya nasıl kullanılacakları geldiği

// Rule 
[['event_date'], 'date', 'format' => 'php:Y-m-d'] 
// Assignment 
$agkn->event_date = date('Y-m-d'); 

docs

bile belirtmez. from_date ve to_date'un ne olduğunu bile söylemiyor. Ve en önemlisi, hiçbir örnek!