2017-01-12 12 views
5

मैं एक POST अनुरोध को सत्यापित करने का प्रयास करता हूं।लैरवेल 5.2 सत्यापन: date_format: Y.m.d काम नहीं कर रहा

प्रारूप है: d.m.Y (12.1.2017) मेरा नियम required|date_format:d.m.Y इस क्षेत्र के लिए है। > पोस्ट डेटा से पहले नियम से मेल करने के लिए बदल गया है - अगर मैं बदल .- या यहां तक ​​कि / यह काम कर रहा है

InvalidArgumentException in Carbon.php line 425: 
Unexpected data found. 
Unexpected data found. 
Data missing 

:

मैं यह त्रुटि संदेश मिलता है।

मुझे इसके लिए जर्मन प्रारूप की आवश्यकता है।

संपादित करें: मेरे सत्यापन नियमों:

public function rules() 
{ 
    return [ 
     'title' => 'required|max:255', 
     'expiration_date' => 'required|date_format:d.m.Y', 
     //'description' => 'required', 
     'provision_agent' => 'required|integer|between:0,100', 
     'discount_consumer' => 'required|integer|between:0,100', 
     'quota' => 'required|integer', 
    ]; 
} 
+0

मुझे लगता है कि यह किसी भी तरह तथ्य यह है कि '.' सत्यापन नियम तार में एक विशेष चार है, आम तौर से संबंधित है अन्य कारणों से लार्वावेल द्वारा उपयोग किया जाता है - लेकिन यह नहीं पता कि यह कैसे बच सकता है – Alex

+0

क्या आपने कोशिश की है \। ? या '['फ़ील्ड' => 'date_format' => ['आवश्यक', 'd.m.Y']]'? इसके अलावा, क्या आप हमें अपना अधिक कोड दिखा सकते हैं? –

+0

@FelippeDuarte सिंटैक्स कहीं भी दस्तावेज है? बस उत्सुक ... – Alex

उत्तर

4

अपने प्रारूप को लपेटना चाहिए, मैंने अभी 5.2 के साथ प्रयास किया है, यह ठीक काम कर रहा है।

public function rules() 
{ 
    return [ 
     'title' => 'required|max:255', 
     'expiration_date' => 'required|date_format:"d.m.Y"', 
     //'description' => 'required', 
     'provision_agent' => 'required|integer|between:0,100', 
     'discount_consumer' => 'required|integer|between:0,100', 
     'quota' => 'required|integer', 
    ]; 
} 

लेकिन त्रुटि क्या आप Carbon.php लाइन में सवाल InvalidArgumentException में जोड़ा 425: यह कुछ और ही लगता है मेरा अनुमान है आप साथ expiration_date नियंत्रक या इस तरह के मॉडल में कुछ प्रयोग कर रहे हैं, जहां कार्बन

echo Carbon::createFromFormat('Y-m-d', '12.1.2017'); 

आप इस

echo Carbon::parse('12.1.2017')->format('Y-m-d') 
की तरह कुछ कोशिश करनी चाहिए 363,210
0

उद्धरण में अपने प्रारूप लपेटें:

'date_format:"d.m.Y"' 
+0

कोशिश की लेकिन एक ही समस्या है। मुझे लगता है । सत्यापन में एक प्रयुक्त ऑपरेटर है। मुझे इससे बचने की ज़रूरत है, लेकिन यह संभव नहीं है या नहीं। – mht

+0

@ एमएचटी लपेटना काम करना चाहिए मैं बस 5.2 के साथ थक गया यह ठीक काम कर रहा है – vijaykumar

0

इस तरह की कोशिश करो,

public function rules() 
{ 
    return [ 
     'title' => 'required|max:255', 
     'expiration_date' => 'date_format:"d.m.Y"|required', // I have changed order of validation 
     //'description' => 'required', 
     'provision_agent' => 'required|integer|between:0,100', 
     'discount_consumer' => 'required|integer|between:0,100', 
     'quota' => 'required|integer', 
    ]; 
} 

आशा इससे आपकी समस्या का समाधान होगा।

+0

मुझे नहीं लगता कि आदेश में परिवर्तन काम करेगा लेकिन लपेटें काम करेंगे। और date_format सत्यापन के बाद। यहां जरूरी कोई उपयोग नहीं है? – vijaykumar

0

अन्यथा आप समस्या को सुलझाने सफल नहीं है, तो आप अभी भी उपयोग कर सकते हैं एक custom validation rule:

Validator::extend('date_dmY', function ($attribute, $value) { 
    $format = 'd.m.Y'; 
    $date = DateTime::createFromFormat($format, $value); 
    return $date && $date->format($format) === $value; 
}, 'optional error message'); 

अतिरिक्त जांच $date->format($format) === $value ग़लती से बाहर के रेंज की तारीख, उदा स्वीकार करने से बचने के लिए है "32.01.2017"। Php.net पर यह comment देखें।

एक बार कस्टम सत्यापन नियम परिभाषित किया गया है, तो आप ऐसा की तरह उपयोग कर सकते हैं:

public function rules() { 
    return [ 
     'expiration_date' => 'required|date_dmY', 
    ]; 
} 
संबंधित मुद्दे