Elm এ HTML Forms তৈরি এবং প্রক্রিয়াকরণ
Elm একটি ফাংশনাল প্রোগ্রামিং ভাষা যা HTML Forms তৈরি এবং প্রক্রিয়াকরণের জন্য অত্যন্ত পরিষ্কার এবং সুশৃঙ্খল পদ্ধতি প্রদান করে। এই প্রক্রিয়াতে Forms এর মাধ্যমে ইউজার ইনপুট গ্রহণ করা হয় এবং সেই ইনপুট পরবর্তী প্রক্রিয়ায় ব্যবহার করা হয়। Elm তে ফর্ম তৈরি এবং প্রক্রিয়াকরণের জন্য Html, Html.Attributes, এবং Html.Events মডিউল ব্যবহার করা হয়।
এখানে Elm এ HTML Forms তৈরি এবং প্রক্রিয়াকরণের মৌলিক ধারণা এবং উদাহরণ দেওয়া হলো।
১. HTML Form তৈরি
Elm এ HTML ফর্ম তৈরি করতে, আমরা সাধারণত input, select, textarea, এবং button উপাদানগুলি ব্যবহার করি। এগুলির জন্য Html.Attributes এবং Html.Events মডিউল থেকে অ্যাট্রিবিউট এবং ইভেন্ট হ্যান্ডলিং ব্যবহৃত হয়।
উদাহরণ: একটি সিম্পল ফর্ম
module Main exposing (..)
import Html exposing (Html, div, input, button, text)
import Html.Attributes exposing (placeholder, type_)
import Html.Events exposing (onClick)
-- মডেল: ফর্মের ডেটা
type alias Model =
{ name : String
, age : String
}
-- ইনিশিয়াল স্টেট
init : Model
init = { name = "", age = "" }
-- মেসেজ
type Msg
= SubmitForm
-- আপডেট: ফর্মের ডেটা আপডেট করা
update : Msg -> Model -> Model
update msg model =
case msg of
SubmitForm -> model
-- ভিউ: ফর্ম তৈরি করা
view : Model -> Html Msg
view model =
div []
[ div []
[ input [ placeholder "Enter your name", type_ "text" ] []
]
, div []
[ input [ placeholder "Enter your age", type_ "text" ] []
]
, button [ onClick SubmitForm ] [ text "Submit" ]
, div [] [ text ("Name: " ++ model.name ++ ", Age: " ++ model.age) ]
]
-- মেইন: অ্যাপ্লিকেশন চালানো
main =
Html.beginnerProgram { model = init, update = update, view = view }এখানে:
- Model:
nameএবংageনামে দুটি ফিল্ড ধারণ করে, যা ইউজারের ইনপুট নিবে। - SubmitForm: মেসেজটি ইনপুট ফর্ম সাবমিটের জন্য ব্যবহৃত হবে।
- View: একটি ফর্ম তৈরি করা হয়েছে যেখানে দুটি
inputফিল্ড এবং একটিsubmitবাটন রয়েছে।
২. ইনপুট ফিল্ডের ডেটা সংগ্রহ এবং আপডেট
Elm এ ফর্মের ইনপুটের ডেটা সংগ্রহ করা হয় onInput ইভেন্ট হ্যান্ডলার ব্যবহার করে। এই ইভেন্ট হ্যান্ডলার ইউজারের ইনপুট অনুযায়ী মডেল আপডেট করে।
উদাহরণ: ইনপুট ডেটা সংগ্রহ
module Main exposing (..)
import Html exposing (Html, div, input, button, text)
import Html.Attributes exposing (placeholder, type_)
import Html.Events exposing (onInput, onClick)
-- মডেল: ফর্মের ডেটা
type alias Model =
{ name : String
, age : String
}
-- ইনিশিয়াল স্টেট
init : Model
init = { name = "", age = "" }
-- মেসেজ
type Msg
= UpdateName String
| UpdateAge String
| SubmitForm
-- আপডেট: মডেল আপডেট করা
update : Msg -> Model -> Model
update msg model =
case msg of
UpdateName newName -> { model | name = newName }
UpdateAge newAge -> { model | age = newAge }
SubmitForm -> model
-- ভিউ: ফর্ম তৈরি করা
view : Model -> Html Msg
view model =
div []
[ div []
[ input [ placeholder "Enter your name", type_ "text", onInput UpdateName ] []
]
, div []
[ input [ placeholder "Enter your age", type_ "text", onInput UpdateAge ] []
]
, button [ onClick SubmitForm ] [ text "Submit" ]
, div [] [ text ("Name: " ++ model.name ++ ", Age: " ++ model.age) ]
]
-- মেইন: অ্যাপ্লিকেশন চালানো
main =
Html.beginnerProgram { model = init, update = update, view = view }এখানে:
onInput UpdateName: এই ইভেন্ট হ্যান্ডলারটি ইউজারের নাম ইনপুট ফিল্ডের পরিবর্তন ট্র্যাক করে এবংUpdateNameমেসেজ পাঠায়।onInput UpdateAge: এই ইভেন্ট হ্যান্ডলারটি ইউজারের বয়স ইনপুট ফিল্ডের পরিবর্তন ট্র্যাক করে এবংUpdateAgeমেসেজ পাঠায়।
৩. ফর্ম সাবমিট করা
Submit মেসেজ ব্যবহার করে আমরা ফর্মটি সাবমিট করতে পারি। সাধারণত, ফর্মটি যখন সাবমিট হয় তখন ইনপুট ফিল্ডের ডেটা স্টেটে আপডেট হয়ে ইউজারের কনফার্মেশন বা রেসপন্স প্রদর্শন করা হয়।
উদাহরণ: ফর্ম সাবমিট
module Main exposing (..)
import Html exposing (Html, div, input, button, text)
import Html.Attributes exposing (placeholder, type_)
import Html.Events exposing (onInput, onClick)
-- মডেল: ফর্মের ডেটা
type alias Model =
{ name : String
, age : String
}
-- ইনিশিয়াল স্টেট
init : Model
init = { name = "", age = "" }
-- মেসেজ
type Msg
= UpdateName String
| UpdateAge String
| SubmitForm
-- আপডেট: মডেল আপডেট করা
update : Msg -> Model -> Model
update msg model =
case msg of
UpdateName newName -> { model | name = newName }
UpdateAge newAge -> { model | age = newAge }
SubmitForm ->
-- ফর্ম সাবমিট করা
model
-- ভিউ: ফর্ম তৈরি করা
view : Model -> Html Msg
view model =
div []
[ div []
[ input [ placeholder "Enter your name", type_ "text", onInput UpdateName ] []
]
, div []
[ input [ placeholder "Enter your age", type_ "text", onInput UpdateAge ] []
]
, button [ onClick SubmitForm ] [ text "Submit" ]
, div [] [ text ("Name: " ++ model.name ++ ", Age: " ++ model.age) ]
]
-- মেইন: অ্যাপ্লিকেশন চালানো
main =
Html.beginnerProgram { model = init, update = update, view = view }এখানে, SubmitForm মেসেজ ফর্ম সাবমিটের জন্য ব্যবহৃত হচ্ছে। ইউজার যখন সাবমিট বাটনে ক্লিক করবেন, তখন ফর্মের স্টেট আপডেট হয়ে যাবে এবং ইউজার প্রাপ্ত ফলাফল প্রদর্শিত হবে।
৪. ফর্ম ভ্যালিডেশন (Form Validation)
Elm তে ফর্ম ভ্যালিডেশন করার জন্য ইনপুট ডেটার সঠিকতা যাচাই করা যায়। যেমন, আপনি বয়সের ক্ষেত্রে শুধুমাত্র সংখ্যাগুলি গ্রহণ করতে পারেন বা নামের ক্ষেত্রে শূন্যস্থান অনুমোদন নাও করতে পারেন।
উদাহরণ: ফর্ম ভ্যালিডেশন
module Main exposing (..)
import Html exposing (Html, div, input, button, text)
import Html.Attributes exposing (placeholder, type_)
import Html.Events exposing (onInput, onClick)
-- মডেল: ফর্মের ডেটা
type alias Model =
{ name : String
, age : String
, errorMessage : String
}
-- ইনিশিয়াল স্টেট
init : Model
init = { name = "", age = "", errorMessage = "" }
-- মেসেজ
type Msg
= UpdateName String
| UpdateAge String
| SubmitForm
-- আপডেট: মডেল আপডেট করা
update : Msg -> Model -> Model
update msg model =
case msg of
UpdateName newName -> { model | name = newName }
UpdateAge newAge -> { model | age = newAge }
SubmitForm ->
if model.name == "" || model.age == "" then
{ model | errorMessage = "Please fill out both fields." }
else
{ model | errorMessage = "" }
-- ভিউ: ফর্ম তৈরি করা
view : Model -> Html Msg
view model =
div []
[ div []
[ input [ placeholder "Enter your name", type_ "text", onInput UpdateName ] []
]
, div []
[ input [ placeholder "Enter your age", type
_ "text", onInput UpdateAge ] []
]
, button [ onClick SubmitForm ] [ text "Submit" ]
, if model.errorMessage /= "" then
div [] [ text model.errorMessage ]
else
div [] [ text ("Name: " ++ model.name ++ ", Age: " ++ model.age) ]
]
-- মেইন: অ্যাপ্লিকেশন চালানো
main =
Html.beginnerProgram { model = init, update = update, view = view }এখানে, SubmitForm মেসেজ ফর্মের ইনপুট যাচাই করে এবং যদি কোনো ইনপুট না থাকে, তবে একটি ত্রুটি বার্তা প্রদর্শন করে।
উপসংহার
Elm এ HTML ফর্ম তৈরি এবং প্রক্রিয়াকরণ সহজ এবং কার্যকরী। Elm এর Html, Html.Attributes, এবং Html.Events মডিউলগুলো ব্যবহার করে ফর্মের ইনপুট গ্রহণ এবং সেটি প্রক্রিয়াকরণ করা সম্ভব। আপনি ইউজারের ইনপুট সঠিকভাবে সংগ্রহ করতে পারবেন, ফর্মের সাবমিট করার সময় স্টেট আপডেট করতে পারবেন এবং ভ্যালিডেশন এর মাধ্যমে ডেটার সঠিকতা নিশ্চিত করতে পারবেন।
Read more