Symfony ធ្វើការរួមបញ្ចូល Form component ដែលធ្វើអោយការប្រតិបត្តិការជាមួយ forms កាន់តែងាយស្រួល។ Symfony Form component ជា library មួយដែលមានភាពដាច់តែឯងដែលអាចប្រើបាននៅក្រៅនៃ project របស់ Symfony។
១ ការបង្កើត Form ដែលមានលក្ខណៈធម្មតា៖
ឧបមាថាអ្នកបង្កើតនូវ ប្រព័ន្ធតារាងការងារមួយដែលត្រូវការបង្ហាញ tasks ព្រោះអ្នកប្រើប្រាស់របស់អ្នកត្រូវការកែប្រែនិងបង្កើត task ថ្មី ដូចនេះអ្នកត្រូវបង្កើត form។ តែមុននឹងចាប់ផ្ដើម ជាដំបូងត្រូវផ្ដោតទៅលើ generic Task class ដែលតំណាងអោយនិងរក្សាទុកនូវទិន្នន័យសម្រាប់ task តែមួយ (single task)។
class នេះគឺ “plain-old-PHP-object” ព្រោះវាគ្មានអ្វីដែលត្រូវធ្វើការជាមួយ Symfony រឺក៏ library ដទៃទៀត។ វាជាPHP object ធម្មតាដែលដោះស្រាយបញ្ហាខាងក្នុង application របស់អ្នកដោយផ្ទាល់។
២ ការបង្កើត Form៖
ពេលនេះអ្នកបានបង្កើត Task class អញ្ចឹងពេលបន្ទាប់ទៀតគឺបង្កើតនិងបង្ហាញ HTML form។ នៅក្នុង Symfony គឺត្រូវបានបញ្ចប់ដោយការបង្កើត form object ហើយបន្ទាប់មកគឺបង្ហាញនូវ template។ ដូចនេះសូមចាប់ផ្ដើមពីចំនុចខាងក្នុងនៃ controller៖
ដោយសារតែ Symfony form objects បង្កើតជាមួយនឹង form builder ដូចនេះការបង្កើត form ទាមទារអោយមានទំនាក់ទំនងនៃកូដខ្លះ។ គោលបំណងនៃ form builder គឺអាចអោយសរសេរនូវ form ‘recipes’ ធម្មតា។
៣ ការបង្ហាញ Form៖
ពេលនេះ form បានបង្កើតហើយ ជំហ៊ានបន្ទាប់គឺការបង្ហាញវា។ វាចប់រួចរាល់ដោយការឆ្លងកាត់នូវ form “view” object ពិសេសមួយទៅកាន់ template ហើយប្រើប្រាស់នូវសំណុំនៃ form helper function។
Twig
PHP
រូបរាង
ដើម្បីបង្ហាញ form ដែលពេញលក្ខណៈ គឺត្រូវការកូដ ៣បន្ទាត់៖
form_start(form)៖ បង្ហាញ start tag នៃ form បញ្ចូលនូវ enctype attribute ដែលត្រឹមត្រូវពេលប្រើ file uploads។
form_widget(form)៖ បង្ហាញ fields ទាំងអស់ដែលបញ្ចូលនូវ field element ដោយខ្លួនវាផ្ទាល់ ហើយ label និង validation error messages សម្រាប់ field។
form_end(form)៖ បង្ហាញ end tag នៃ form និង fields ផ្សេងទៀតដែលមិនទាន់បានបង្ហាញ។
៤ ការដោះស្រាយបញ្ហានៃការស្នើររបស់ Form៖
តាមលក្ខណៈដើម form នឹង submit នូវ POST ស្នើរត្រលប់ទៅកាន់ controller ដូចគ្នាដែលបង្ហាញវា។ នេះជាកិច្ចការទី២នៃ form គឺបកប្រែ user-submitted ទិន្នន័យត្រលប់ទៅកាន់ properties នៃ object។ ដើម្បីអោយវាកើតឡើង ទិន្នន័យដែលបាន submitted ពីអ្នកប្រើប្រាស់ត្រូវសរសេរទៅក្នុង Form object។ សូមមើលឧទាហរណ៏៖
៥ Form Validation៖
Validation បញ្ចប់ដោយការបន្ថែមនូវសំណុំនៃច្បាប់ (ហៅថា constraints) ទៅកាន់ class។ ដើម្បីឃើញពីសកម្មភាពនេះ សូមបន្ថែម validation constraints ដូចនេះ task field មិនអាចទទេរបានទេហើយ field dueDate ក៏មិនអាចទទេរបានដែរនិងត្រូវតែមាន DateTime object ត្រឹមត្រូវ។
ប្រសិនបើអ្នកមិនបានបំពេញ field ណាមួយទេនោះ អ្នកនឹងបានឃើញ សារ error បង្ហាញនៅលើ form ពេលដែលអ្នក submit ម្ដងទៀត។
៦ ការបង្កើត Form Classes៖
Form អាចបង្កើតនិងប្រើក្នុង controller ដោយផ្ទាល់។ បើទោះជា form ត្រូវបានបង្កើតដាច់តែឯង តែយើងអាចប្រើវាបានម្ដងទៀតនៅគ្រប់កន្លែងក្នុង application ។ ការបង្កើត class ថ្មីដែលផ្ទុកនូវតក្កសម្រាប់បង្កើត task form គឺអនុវត្តន៏តាមវិធីនេះ៖
class ថ្មីនេះផ្ទុកនូវទិសដៅទាំងអស់ដែលត្រូវការដើម្បីបង្កើត task form។ វាអាចនឹងត្រូវប្រើដើម្បីជំរុញល្បឿននៃការបង្កើត form object ក្នុង controller អោយកាន់តែលឿន៖
សរុបសេចក្ដីមក ពេលបង្កើត form ត្រូវចាំថាគោលដៅដំបូងនៃ form គឺបកប្រែទិន្នន័យពី object (Task) ទៅកាន់ HTML form ដូចនេះ អ្នកប្រើប្រាស់អាចធ្វើការកែប្រែទិន្នន័យនោះបាន។ គោលដៅទីពីរគឺ យកទិន្នន័យដែលបាន submitted ដោយអ្នកប្រើប្រាស់និងធ្វើការស្នើរវាម្ដងទៀតទៅកាន់ object។