স্ট্রিক্ট মোড দিয়ে ফর্মের স্কিমাকে কর্তৃত্ব দিন
স্ট্রিক্ট মোড ডিফল্টভাবে বন্ধ থাকে, তাই স্কিমা উত্তরগুলোর বিচার না করে জেনারেশনের পথ দেখায়। এটি প্রতি ফর্মে চালু করলে অঘোষিত ফিল্ড প্রত্যাখ্যান হয়ে যায়, আর ফাইল ফিল্ড দুই অবস্থাতেই কর্তৃত্ব রাখে।
এই পোস্টটি যন্ত্রের মাধ্যমে অনুবাদ করা হয়েছে। ইংরেজিতে মূল পোস্টটি পড়ুন

স্ট্রিক্ট মোড একটি ফর্মের উপর একটি সুইচ, আর ফর্ম তৈরি হওয়ার সময় তা বন্ধ থাকে। বন্ধ থাকা কোনো অবহেলা নয়: প্রায় সব ফর্ম এখান থেকেই শুরু হয়, কারণ যে ফর্ম কখনও সাবমিশন পায়নি সে নিজের গঠন এখনও জানে না। সুইচটি যেটি বদলায় তা হলো—স্কিমাটি কার জন্য।
চালু করলে কী বদলায়
স্ট্রিক্ট মোড বন্ধ থাকলে স্কিমা জেনারেশনের পথ দেখায়। এটি ঠিক করে বিল্ডারের প্রিভিউ কোন ফিল্ড দেখাবে আর জেনারেট করা কম্পোনেন্ট কী রেন্ডার করবে, আর এর ভিত্তিতেই FormFlow শেখে যখন সে দেখা কোনো ফিল্ড গ্রহণের প্রস্তাব দেয়। কিন্তু এটি উত্তরগুলোর বিচার করে না। অতিরিক্ত একটি কী লঙ্ঘন নয়: সেটি উত্তর হিসেবে পৌঁছায়।
স্ট্রিক্ট মোড চালু থাকলে স্কিমা দুই দিকেই চুক্তি হয়ে যায়। ঘোষিত কোনো ফিল্ড না পৌঁছালে, বা তার নিয়ম পূরণ না করলে, তা প্রত্যাখ্যাত হয়। অঘোষিত কী পৌঁছালেও তা প্রত্যাখ্যাত হয়—একই দরজা, একই ফিল্ড-ভিত্তিক ত্রুটি, আর বার্তা যা বলে যে ফিল্ডটি ঘোষিত ছিল না। এই সমমিতিই পুরো উদ্দেশ্য: স্ট্রিক্ট ফর্ম নীরবে এমন উত্তর জমাতে পারে না যা সে কখনও চায়নি। স্ট্রিক্ট মোড v1.0.0-এর সঙ্গে এসেছে, আর API রেফারেন্স সেই প্রত্যাখ্যান বর্ণনা করে যা এটি ফেরত দেয়।
ফিল্ড নিয়ম আসে একটি বদ্ধ শব্দভান্ডার থেকে
স্ট্রিক্ট মোডই একমাত্র মোড যেখানে ফিল্ড নিয়ম কার্যকর হয়। ফিল্ড নিয়ম হলো একটি ফিল্ডের উপর অতিরিক্ত বাধা, তার ধরন যা আগেই বোঝায় তার বাইরে, আর এটি সেই তালিকা থেকে বাছা হয় যা FormFlow দেয় এবং সেই ধরনে সীমাবদ্ধ রাখে। আপনি তালিকা থেকে বাছেন; নিয়ম কখনও লেখেন না। কোনো ফর্ম FormFlow-কে এমন যাচাই চালাতে বলতে পারে না যা FormFlow লেখেনি।
ফিল্ডের ধরন | বাছাইযোগ্য নিয়ম | সীমা |
|---|---|---|
টেক্সট | শুধু অক্ষর; অক্ষর ও সংখ্যা; অক্ষর, সংখ্যা, ড্যাশ ও আন্ডারস্কোর; শুধু সাধারণ ASCII; ছোট হাতের; বড় হাতের; একটি UUID; একটি ULID; একটি IP ঠিকানা; একটি MAC ঠিকানা; হেক্স রং | সর্বনিম্ন ও সর্বোচ্চ দৈর্ঘ্য |
টেক্সটএরিয়া | শুধু সাধারণ ASCII; বৈধ JSON | সর্বনিম্ন ও সর্বোচ্চ দৈর্ঘ্য |
সংখ্যা | একটি পূর্ণ সংখ্যা | সর্বনিম্ন ও সর্বোচ্চ মান |
ইমেল, ফোন | কোনোটি নয় | সর্বনিম্ন ও সর্বোচ্চ দৈর্ঘ্য |
সিলেক্ট, একক পছন্দ | কোনোটি নয় | কোনোটি নয় |
এই তালিকা নিয়ে দুটি কথা। সীমা একটি পূর্ণ সংখ্যা, সর্বোচ্চ ছয় অঙ্ক। আর বিকল্প-তালিকাভিত্তিক ধরন কোনো নিয়মই নেয় না: তার বিকল্পের তালিকাই বাধা, আর স্ট্রিক্ট মোড প্রতিটি উত্তর তার বিপরীতে বিচার করে।
যেখানে স্ট্রিক্ট মোড আপনার পছন্দ নয়
ঘোষিত ফাইল ফিল্ড প্রতিটি ফর্মে কর্তৃত্ব রাখে, স্ট্রিক্ট মোড চালু থাকুক বা না। এটি প্রতিবার ধরন, আকার ও সংখ্যায় যাচাই হয়, এবং কঠোরভাবে প্রত্যাখ্যান করে। এটি ইচ্ছাকৃত: আপলোড ডিস্কে বাইট, তাই এটি এমন সেটিংয়ে ছাড়া যায় না যা ডিফল্টে বন্ধ। অন্য ব্যতিক্রম হলো গ্রেডেড ফর্ম: উত্তর-কীযুক্ত ফর্ম সবসময় স্ট্রিক্ট মোডে থাকে এবং কেবল হোস্ট করা পৃষ্ঠা হতে পারে, কারণ এমবেড করা মার্কআপ তাকে ন্যায্যভাবে দেখাতেও পারে না, গ্রেডও করতে পারে না।
ভয় নয়, প্রমাণ দিয়ে সিদ্ধান্ত নিন
এটি চালু করার আগে প্রার্থী কনফিগারেশনটি ফর্মের নিজের ইতিহাসে আবার চালান। FormFlow সেই সাবমিশনগুলোও রাখে যা ফর্ম গ্রহণ করেছে এবং সেই প্রত্যাখ্যাত সাবমিশনগুলোও যা সে ফিরিয়ে দিয়েছে, তাই এই পুনরাবৃত্তি দেখাতে পারে পরিবর্তনের দাম কী হবে, তার আগেই যে কেউ সেই দাম দেয়। এ কারণেই স্ট্রিক্ট মোড দেরিতে, ফর্মে ট্রাফিক আসার পরেও চালু করা যায়।
শান্ত থাকার দ্বিতীয় কারণ: প্রত্যাখ্যান অদৃশ্য ক্ষতি নয়। প্রত্যাখ্যাত সাবমিশন এমন রেকর্ড হিসেবে রাখা হয় যার উপর আপনি কাজ করতে পারেন, বিতরণ হয় না, গণনাকৃত সাবমিশন হয় না, আর সেটিং ঠিক হলেই ফিরে পাওয়া যায়। স্ট্রিক্ট মোড স্কিমা ঠিক করার দাঁড় বাড়ায়; ভুলকে স্থায়ী করে না।
জানা দরকার এমন সীমা
ডিফল্টে বন্ধ। যদি মনে না থাকে যে আপনি এটি চালু করেছিলেন, তবে তা বন্ধ।
এটি কেবল উত্তরগুলোর বিচার করে। অনুমোদিত উৎস তালিকা ও অনুরোধের গঠন প্রতিটি ফর্মে যাচাই হয়, স্ট্রিক্ট হোক বা না।
ঘোষিত ফাইল ফিল্ড দুই অবস্থাতেই যাচাই হয়, তাই আপলোড ছাড়া পাস হওয়া স্ট্রিক্ট-মোড পরীক্ষা ফাইল সম্পর্কে কিছুই প্রমাণ করে না।
ফিল্ড নিয়ম কেবল স্ট্রিক্ট মোডে প্রযোজ্য। কোনো ফর্মকে স্ট্রিক্ট মোড থেকে বাইরে নিলে নীরবে তার জন্য বাছা প্রতিটি নিয়ম প্রয়োগ করা বন্ধ হয়ে যায়।
গ্রেডেড ফর্ম স্ট্রিক্ট মোড ছাড়তে পারে না এবং এমবেডও হতে পারে না, তাই তার স্কিমা প্রথম সাবমিশনের আগেই ঠিক করুন।