របៀបប្រើ SonataAdminBundle នៅក្នុង Symfony3 (ភាគទី៣)

បន្ទាប់ពីបង្កើត Admin រួចរាល់ហើយ ពេលនេះអ្នកត្រូវធ្វើការទៅលើ Form View ម្ដង ហើយនៅក្នុង Form View ក៏បែងចែកជាច្រើនដំណាក់កាលដូចទៅនឹង Admin ផងដែរ។ ដូចនេះដើម្បីអោយកាន់តែយល់ច្បាស់ សូមតាមដានទាំងអស់គ្នា៖

Form View

១.១ ការ Configure Form Mapper

ប្រសិនបើអ្នកបានស្គាល់នូវ Symfony Form component ហើយនោះ អ្នកនឹងងាយស្រួលក្នុងការស្វែងយល់អំពី FormMapper ។

ឧទាហរណ៏ថាអ្នកមាន BlogPost model មួយដែលមាន ៤ properties ដូចជា id, title, body និង category។ តម្លៃនៃ properties id គឺបង្កើតដោយស្វ័យប្រវត្តិដោយ database មានន័យថា អ្នកត្រូវការបន្ថែមនូវ fields ចំនួន៣ទៀតតែប៉ុណ្ណោះក្នុង form view ដែលមានដូចជា title, body និង category។

title ហើយនិង body fields គឺជា fields “text” និង “textarea” ធម្មតា ហើយអ្នកអាចបន្ថែមវាបានដោយ៖

sonata15

បើទោះជាយ៉ាងណាក៏ដោយ category field បានធ្វើការ reference ពី model ផ្សេងទៀត ដូចនេះតើអ្នកនឹងដោះស្រាយវាដោយរបៀបណា?

.២ ការបន្ថែមនូវ Fields ដែល Reference ពី Models ផ្សេងទៀត

អ្នកអាចមានជម្រើស២ផ្សេងគ្នាដែលនឹងត្រូវធ្វើការ បន្ថែម field ដែល reference ពី model ផ្សេងទៀត។ ចំពោះជម្រើសទី១ដែលពេញនិយមជាងគេនោះគឺ ប្រើប្រាស់ entity field type ដែលផ្ដល់ដោយ DoctrineBundle ។ វានឹងធ្វើការ render នូវ choice field ជាមួយនឹង entities choice ដែលនៅអាចប្រើការបាន។ សូមធ្វើដូចនេះក្នុង Model របស់អ្នក៖

sonata16

blog post នីមួយៗអាចនឹងមាន category មួយតែប៉ុណ្ណោះ វា renders ទៅជា select list៖

getting_started_entity_type

ពេលដែល Admin ចង់ធ្វើការបង្កើត category ថ្មី គេត្រូវចូលទៅក្នុង category admin page រួចហើយបង្កើត category ថ្មីបានហើយ។

.៣ ការបង្កើត Blog Post

នៅពេលនេះ BlogPost model របស់អ្នកគឺមាន form view មួយហើយ ដូចនេះចំណុចបន្ទាប់ដែលនឹងត្រូវធ្វើនោះគឺ ការបង្កើត post ។ toString() method អាចជួយអ្នកក្នុងការបង្កើត Blog Post បាន៖

sonata17

ពេលនេះអ្នកបានបញ្ចប់រួចរាល់ហើយជាមួយនឹង Form View ។ ភាគបន្ទាប់មកទៀតយើងនឹងនាំលោកអ្នកអោយស្វែងយល់អំពី List View វិញម្ដង។