একটি ভ্যালিডেটর হল একটি ফাংশন যা ক্ষেত্রগুলিতে নতুন মান নেয় এবং তারপরে এটিতে কাজ করে। তারা একটি ক্ষেত্র কাস্টমাইজ করার একটি সহজ উপায়. তারা আপনাকে কার্যকারিতা ট্রিগার করার অনুমতি দেয় যখন একটি ক্ষেত্রের মান পরিবর্তন হয়, ইনপুট পরিবর্তন হয়, বা কোন মানগুলি গ্রহণযোগ্য তা সীমাবদ্ধ করে।
কিছু সাধারণ উদাহরণ:
- শুধুমাত্র অক্ষর গ্রহণ করার জন্য একটি পাঠ্য ক্ষেত্র সীমাবদ্ধ করা।
- একটি পাঠ্য ক্ষেত্র অ-খালি হওয়া আবশ্যক।
- প্রয়োজন যে একটি তারিখ ভবিষ্যতে হতে হবে.
- ড্রপডাউনের উপর ভিত্তি করে ব্লকের আকৃতি পরিবর্তন করা।
যাচাইকারীদের প্রকারভেদ
ভ্যালিডেটররা বিভিন্ন সময়ে এক্সিকিউট করে তার উপর নির্ভর করে তারা কি ধরনের ভ্যালিডেটর।
ক্লাস ভ্যালিডেটর হল ফিল্ড টাইপের ক্লাস ডেফিনেশনের অংশ, এবং সাধারণত ফিল্ড দ্বারা অনুমোদিত মানের ধরন সীমাবদ্ধ করতে ব্যবহৃত হয় (যেমন সংখ্যা ক্ষেত্রগুলি শুধুমাত্র সাংখ্যিক অক্ষর গ্রহণ করে)। ক্লাস ভ্যালিডেটরগুলি ফিল্ডে পাস করা সমস্ত মানগুলিতে চালিত হয় (কন্সট্রাক্টরের কাছে দেওয়া মান সহ)।
ক্লাস ভ্যালিডেটর সম্পর্কে আরও তথ্যের জন্য একটি কাস্টম ফিল্ড তৈরিতে একটি ক্লাস যাচাইকারীর প্রয়োগ করা বিভাগটি দেখুন।
একটি ক্ষেত্রের নির্মাণের সময় স্থানীয় যাচাইকারীদের সংজ্ঞায়িত করা হয়। স্থানীয় যাচাইকারীরা কনস্ট্রাক্টরের কাছে প্রেরিত মান ব্যতীত ক্ষেত্রটিতে পাস করা সমস্ত মানগুলিতে চলে৷ এর মানে তারা চালায়:
- XML-এ থাকা মান।
- মান সেট ভ্যালুতে পাস করা হয়েছে।
- মান সেটফিল্ড ভ্যালুতে পাস করা হয়েছে।
- ব্যবহারকারীর দ্বারা পরিবর্তিত মান.
ক্লাস ভ্যালিডেটরদের স্থানীয় যাচাইকারীদের আগে চালানো হয় কারণ তারা দারোয়ানের মতো কাজ করে। তারা নিশ্চিত করে যে মানটি পাস করার আগে সঠিক ধরণের।
মান যাচাইকরণের ক্রম এবং সাধারণভাবে মান সম্পর্কে আরও তথ্যের জন্য মান দেখুন।
একটি স্থানীয় বৈধতা নিবন্ধন
স্থানীয় যাচাইকারীদের দুটি উপায়ে নিবন্ধিত করা যেতে পারে:
- একটি ক্ষেত্রের কনস্ট্রাক্টরে সরাসরি যোগ করা হয়েছে।
Blockly.Blocks['validator_example'] = {
init: function() {
// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
return newValue.replace(/\a/g, '');
};
this.appendDummyInput()
.appendField(new Blockly.FieldTextInput('default', validator));
}
};
- সেট ভ্যালিডেটর সহ।
Blockly.Blocks['validator_example'] = {
init: function() {
// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
return newValue.replace(/\a/g, '');
};
var field = new Blockly.FieldTextInput('default');
field.setValidator(validator);
this.appendDummyInput().appendField(field);
}
};
JSON বিন্যাস সমর্থন করার জন্য উপরের পদ্ধতিগুলির যেকোন একটি এক্সটেনশনে মোড়ানো যেতে পারে।
ক্ষেত্রের মান যাচাই করা হচ্ছে তার উপর নির্ভর করে খুব ভিন্ন হতে পারে (যেমন একটি সংখ্যা ক্ষেত্র একটি সংখ্যা সংরক্ষণ করবে, যখন একটি পাঠ্য ইনপুট ক্ষেত্র একটি স্ট্রিং সংরক্ষণ করবে) তাই একটি তৈরি করার আগে আপনার নির্দিষ্ট ক্ষেত্রের জন্য ডকুমেন্টেশন পড়া ভাল যাচাইকারী
মান ফেরত দিন
যাচাইকারীর রিটার্ন মান নির্ধারণ করে যে ক্ষেত্রটি পরবর্তী কি করে। তিনটি সম্ভাবনা আছে:
পরিবর্তিত রিটার্ন মান
একটি পরিবর্তিত বা ভিন্ন মান, যা পরে ক্ষেত্রের নতুন মান হয়ে যায়। এটি প্রায়ই একটি মান পরিষ্কার করতে ব্যবহৃত হয়, যেমন ট্রেলিং হোয়াইটস্পেস মুছে ফেলার মাধ্যমে।
একটি পরিবর্তনকারী যাচাইকারীর উদাহরণ:
// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
return newValue.replace(/\a/g, '');
};
শূন্য রিটার্ন মান
শূন্য, যার মানে প্রদত্ত মানটি অবৈধ। বেশিরভাগ ক্ষেত্রে ক্ষেত্রটি ইনপুট মান উপেক্ষা করবে। সঠিক আচরণটি ক্ষেত্রের doValueInvalid_
ফাংশন দ্বারা নির্দিষ্ট করা হয়।
নলিং ভ্যালিডেটরের উদাহরণ:
// Any value containing a 'b' character is invalid. Other values are valid.
var validator = function(newValue) {
if (newValue.indexOf('b') != -1) {
return null;
}
return newValue;
};
অনির্ধারিত রিটার্ন মান
অনির্ধারিত (বা কোন রিটার্ন বিবৃতি নেই) বা ইনপুট মান, যার মানে ইনপুট মানটি ক্ষেত্রের নতুন মান হওয়া উচিত। এই ধরনের যাচাইকারীরা সাধারণত পরিবর্তন শ্রোতা হিসাবে কাজ করে।
একজন শ্রোতা যাচাইকারীর উদাহরণ:
// Log the new value to console.
var validator = function(newValue) {
console.log(newValue);
};
আবারও লক্ষ্য করুন কিভাবে ডিসপ্লে টেক্সট অগত্যা ক্ষেত্রের মান প্রতিফলিত করে না।
এই মান
একটি যাচাইকারীর ভিতরে this
ক্ষেত্রকে বোঝায়, ব্লক নয়। আপনি যদি একটি যাচাইকারীর ভিতরে ব্লক অ্যাক্সেস করতে চান তাহলে getSourceBlock
ফাংশন ব্যবহার করুন। আপনি বাইন্ড ফাংশনটি ব্যবহার করতে পারেন প্রসঙ্গ সেট করতে যার মধ্যে যাচাইকারীকে বলা হয়েছে।
getSourceBlock
ব্যবহার করে নমুনা কোড:
Blockly.Blocks['colour_match'] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldColour(
null, this.validate
), 'COLOUR');
this.setColour(this.getFieldValue('COLOUR'));
},
validate: function(colourHex) {
this.getSourceBlock().setColour(colourHex);
}
};
বাঁধ ব্যবহার করে নমুনা কোড:
Blockly.Blocks['colour_match'] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldColour(
null, this.validate.bind(this)
), 'COLOUR');
this.validate(this.getFieldValue('COLOUR'));
},
validate: function(colourHex) {
this.setColour(colourHex);
}
};