লম্বা ফর্মকে ধাপে ভাগ করুন, এন্ডপয়েন্ট না বদলে
ধাপ লম্বা ফর্মকে স্ক্রিনে ভাগ করে, এন্ডপয়েন্টে হাত না দিয়ে: একই POST সব ফিল্ড বহন করে, বিরতি নিচের ফিল্ডের সঙ্গে চলে, আর ফর্ম একটি পাতায় ফিরে যায়।
এই পোস্টটি যন্ত্রের মাধ্যমে অনুবাদ করা হয়েছে। ইংরেজিতে মূল পোস্টটি পড়ুন

লম্বা ফর্ম মানে প্রশ্নের একটিই পাতা, আর মানুষ ঠিক সেই এক পাতাতেই চলে যায়। ধাপ সেটিকে স্ক্রিনে ভাগ করে। যা তারা করে না, তা হলো এন্ডপয়েন্ট বদলানো: ফর্ম এখনও একবারই জমা হয়, সব ফিল্ড নিয়ে, আপনার মার্কআপে আগেই লেখা ঠিকানাতেই।
ধাপ উপস্থাপনের সিদ্ধান্ত
ধাপ হলো ফর্মের ফিল্ডের একটি নামকরা দল, যা জমা দেওয়া ব্যক্তিকে একবারে একটি স্ক্রিন হিসেবে দেখানো হয়। ফর্মকে কয়েকটি ধাপে ভাগ করলে গ্রহণ, কোটা, স্প্যাম স্কোরিং বা সংরক্ষণে কিছুই বদলায় না: বিচারক আগের মতোই একই বডি পায়, আর একটি জমা একটি গণিত জমাই থাকে।
এইটুকুই পুরো চুক্তি, তাই ধাপ যোগ করা উপস্থাপনের পরিবর্তন, আপনার ইন্টিগ্রেশনের নয়। আপনার HTML-এর ঠিকানা, মার্কআপের ফিল্ডের নাম, আর আপনার প্ল্যানে জমার সংখ্যা—সব নিজের জায়গায় থাকে। ধাপ সশুল্ক প্ল্যানে পাওয়া যায়।
বিরতি নিচের ফিল্ডের
বিল্ডারে ধাপের বিরতি হলো সেই ফিল্ডের উপর একটি চিহ্ন যা পরের ধাপ খোলে—অর্থাৎ সেই ফিল্ডের উপরে টানা একটি রেখার মতোই। এটি ফিল্ডের সঙ্গে চলে, তাই ফিল্ড টানলে বিরতিও সঙ্গে যায়। ধাপের বিরতি দুই প্রশ্নের মাঝে ফেলা বিভাজক নয়; এটি একটি ফিল্ডের গুণ, আর ফিল্ডের তালিকা উপর থেকে পড়া মানে ধাপের ক্রম পড়া।
এর দুটি ফল আছে। ফিল্ডের ক্রম বদলালে ধাপের ক্রম বদলায়, তাই যে ধাপ আপনার ভালো লেগেছিল তা উপরেরটিতে মিশে যেতে পারে। আর খালি ধাপ বন্ধ হয়ে যায়: FormFlow এমন স্ক্রিন রাখে না যাতে কিছু নেই।
একটি POST সব ফিল্ড বহন করে
ফর্ম একবারে একটি ধাপ আঁকে, কিন্তু ব্রাউজার এখনও একটি অনুরোধ পাঠায়। জমা দেওয়া ব্যক্তি যা উত্তর দিয়েছেন সব একসঙ্গে পৌঁছায়, ফর্মের স্কিমায় থাকা ফিল্ডের নামের কী নিয়ে। এন্ডপয়েন্টের রেফারেন্স /docs/api-এ: একটি POST, একটি বডি, একটি উত্তর।
curl -X POST https://formflow.digital/api/v1/f/ff_live_example \
-H 'Content-Type: application/json' \
-d '{
"name": "Lena Ortiz",
"email": "lena@example.com",
"company": "Ortiz Studio",
"budget": "5000",
"brief": "A one-page site, live in June."
}'পাঁচটি ফিল্ড, তিনটি ধাপ, একটি অনুরোধ। স্ক্রিনের মাঝে মেলানোর মতো আধা-জমা নেই, আবার চেষ্টার জন্য দ্বিতীয় অনুরোধ নেই, আর প্রতিটি ধাপের জন্য কোনো রসিদ নেই। অনুরোধ ব্যর্থ হলে চেষ্টা ব্যর্থ; সফল হলে FormFlow-এর কাছে একটি জমা থাকে এবং সে একবারই তা বিচার করে।
কখন ফর্ম সমতল আঁকে
ফর্ম সব ফিল্ড এক পাতায়, একটি জমা দেওয়ার বোতামের নিচে, তিন ক্ষেত্রে আঁকে: এটি কোনো ধাপ ঘোষণা করে না, টিমের প্ল্যান আর তা অনুমতি দেয় না, বা জমা দেওয়া ব্যক্তির ব্রাউজার JavaScript চালায় না। সমতল আঁকা পরে জোড়া বিকল্প নয়; ধাপ হলো তার চারপাশের আবরণ।
যার স্ক্রিপ্ট বন্ধ, সে একই ফিল্ড, একই নাম আর একই জমা দেওয়ার বোতাম পায়—শুধু এক পাতায়। ফর্ম ভাঙেনি, এটি শুধু এক পাতা। প্ল্যান বদলে ধাপ হারানোও কোনো মাইগ্রেশন নয়: ফর্ম তার স্কিমায় ধাপ রেখে দেয়, অনুমতি না থাকা পর্যন্ত সমতল আঁকে, আর অনুমতি ফিরলে আবার ধাপে আঁকে।
যেখানে ধাপ ভোঁতা
ধাপ স্কিমাও লুকায় না। আপনি যা ঘোষণা করেন তা চুক্তিতে থাকে, কোনো স্ক্রিন তা দেখাক বা না দেখাক, আর কোন ফিল্ড দেখা যাচ্ছে সে বিষয়ে ব্রাউজারের মত কখনও ঠিক করে না কী গৃহীত হবে। যদি কোনো ফিল্ড শুধু অদৃশ্য নয়, অনুপস্থিত হওয়া দরকার হয়, তবে তা ঘোষণা করবেন না।
v1.0.0-এর পরিবর্তন তালিকার এন্ট্রি যে বাক্যের উপর এই সব দাঁড়িয়ে আছে তা লিখে রাখে: যেকোনো HTML ফর্ম FormFlow-এর দিকে ঘুরিয়ে দিন, বা হোস্টেড পাতা বা এমবেড ব্যবহার করুন, আর এটি প্রতিটি জমা গ্রহণ, ছাঁকন, সংরক্ষণ ও পাঠিয়ে দেয়। ধাপ ওই বাক্যের মাঝের অংশ পুনর্বিন্যাস করে। এটি বাক্যটি লম্বা করে না।