ស្វែងយល់អំពី Forms នៅក្នុង Symfony3

Symfony ធ្វើការរួមបញ្ចូល Form component ដែលធ្វើអោយការប្រតិបត្តិការជាមួយ forms កាន់តែងាយស្រួល។ Symfony Form component ជា library មួយដែលមានភាពដាច់តែឯងដែលអាចប្រើបាននៅក្រៅនៃ project របស់ Symfony។

១ ការបង្កើត Form ដែលមានលក្ខណៈធម្មតា៖
ឧបមាថាអ្នកបង្កើតនូវ ប្រព័ន្ធតារាងការងារមួយដែលត្រូវការបង្ហាញ tasks ព្រោះអ្នកប្រើប្រាស់របស់អ្នកត្រូវការកែប្រែនិងបង្កើត task ថ្មី ដូចនេះអ្នកត្រូវបង្កើត form។ តែមុននឹងចាប់ផ្ដើម ជាដំបូងត្រូវផ្ដោតទៅលើ generic Task class ដែលតំណាងអោយនិងរក្សាទុកនូវទិន្នន័យសម្រាប់ task តែមួយ (single task)។

form-1

class នេះគឺ “plain-old-PHP-object” ព្រោះវាគ្មានអ្វីដែលត្រូវធ្វើការជាមួយ Symfony រឺក៏ library ដទៃទៀត។ វាជាPHP object ធម្មតាដែលដោះស្រាយបញ្ហាខាងក្នុង application របស់អ្នកដោយផ្ទាល់។

២ ការបង្កើត Form៖

ពេលនេះអ្នកបានបង្កើត Task class អញ្ចឹងពេលបន្ទាប់ទៀតគឺបង្កើតនិងបង្ហាញ HTML form។ នៅក្នុង Symfony គឺត្រូវបានបញ្ចប់ដោយការបង្កើត form object ហើយបន្ទាប់មកគឺបង្ហាញនូវ template។ ដូចនេះសូមចាប់ផ្ដើមពីចំនុចខាងក្នុងនៃ controller៖

form-2

ដោយសារតែ Symfony form objects បង្កើតជាមួយនឹង form builder ដូចនេះការបង្កើត form ទាមទារអោយមានទំនាក់ទំនងនៃកូដខ្លះ។ គោលបំណងនៃ form builder គឺអាចអោយសរសេរនូវ form ‘recipes’ ធម្មតា។

៣ ការបង្ហាញ Form៖

ពេលនេះ form បានបង្កើតហើយ ជំហ៊ានបន្ទាប់គឺការបង្ហាញវា។ វាចប់រួចរាល់ដោយការឆ្លងកាត់នូវ form “view” object ពិសេសមួយទៅកាន់ template ហើយប្រើប្រាស់នូវសំណុំនៃ form helper function។

Twig

form-3

PHP

form-4

រូបរាង

form-5

ដើម្បីបង្ហាញ 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-6

៥ Form Validation៖
Validation បញ្ចប់ដោយការបន្ថែមនូវសំណុំនៃច្បាប់ (ហៅថា constraints) ទៅកាន់ class។ ដើម្បីឃើញពីសកម្មភាពនេះ សូមបន្ថែម validation constraints ដូចនេះ task field មិនអាចទទេរបានទេហើយ field dueDate ក៏មិនអាចទទេរបានដែរនិងត្រូវតែមាន DateTime object ត្រឹមត្រូវ។

form-7

ប្រសិនបើអ្នកមិនបានបំពេញ field ណាមួយទេនោះ អ្នកនឹងបានឃើញ សារ error បង្ហាញនៅលើ form ពេលដែលអ្នក submit ម្ដងទៀត។

៦ ការបង្កើត Form Classes៖

Form អាចបង្កើតនិងប្រើក្នុង controller ដោយផ្ទាល់។ បើទោះជា form ត្រូវបានបង្កើតដាច់តែឯង តែយើងអាចប្រើវាបានម្ដងទៀតនៅគ្រប់កន្លែងក្នុង application ។ ការបង្កើត class ថ្មីដែលផ្ទុកនូវតក្កសម្រាប់បង្កើត task form គឺអនុវត្តន៏តាមវិធីនេះ៖

form-8

class ថ្មីនេះផ្ទុកនូវទិសដៅទាំងអស់ដែលត្រូវការដើម្បីបង្កើត task form។ វាអាចនឹងត្រូវប្រើដើម្បីជំរុញល្បឿននៃការបង្កើត form object ក្នុង controller អោយកាន់តែលឿន៖

form-9

សរុបសេចក្ដីមក ពេលបង្កើត form ត្រូវចាំថាគោលដៅដំបូងនៃ form គឺបកប្រែទិន្នន័យពី object (Task) ទៅកាន់ HTML form ដូចនេះ អ្នកប្រើប្រាស់អាចធ្វើការកែប្រែទិន្នន័យនោះបាន។ គោលដៅទីពីរគឺ យកទិន្នន័យដែលបាន submitted ដោយអ្នកប្រើប្រាស់និងធ្វើការស្នើរវាម្ដងទៀតទៅកាន់ object។