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

ដូចដែលបានសន្យារួចមកហើយកាលពីភាគទី៣ ថាយើងខ្ញុំនឹងពន្យល់លោកអ្នកអំពី List View ដែលមានក្នុង SonataAdminBundle នៃ Symfony 3 ។ ក្រៅពីនេះ អ្នកក៏បានបង្កើតនូវ Admin interface មួយដែលអាចអោយអ្នកប្រើប្រាស់ អាចធ្វើការ បង្កើត និង កែប្រែ នូវ blog posts និង categories របស់គេ ប៉ុន្តែទាំងនេះគឺវាមិនច្រើនទេក្នុងការកែប្រែប្រសិនបើ admin មិនមាន list នៃ blog posts។

List View

១ ការ configure List Mapper

ប្រសិនបើអ្នកបានបង្កើតនូវ blogs ហើយចូលទៅកាន់ http://localhost:8000/admin/app/blogpost/list នោះអ្នកនឹងឃើញនូវ list page ទទេរ។ វាមិនមែនមកពីគ្មានអត្ថបទនោះទេ តែអ្នកមិនបានធ្វើការ configure នូវ Admin’s list view របស់អ្នក។ ចំណែក Sonata មិនទាន់ដឹងថា field ណាមួយដែលនឹងត្រូវបង្ហាញទេ ដូចនេះវាគ្រាន់តែបង្ហាញនូវ row ទទេរតែប៉ុណ្ណោះ។ ដូចនេះដើម្បីដោះស្រាយបញ្ហានេះបាន អ្នកគ្រាន់តែបន្ថែមនូវ field ដែលអ្នកចង់បង្ហាញណាមួយដែលមាននៅលើ list page ទៅកាន់ list view តែប៉ុណ្ណោះ៖

sonata18

សាកល្បងចូលទៅ list view នៃ the blog post admin ម្ដងទៀតនោះអ្នកនឹងឃើញ blog post ដែលអាចប្រើប្រាស់បាន៖

getting_started_basic_list_view

អ្នកនឹងឃើញថា Sonata បានកំណត់ field type បានយ៉ាងត្រឹមត្រូវហើយវាបានបង្ហាញនៅក្នុងវិធីមួយដែល friendly។ boolean draft field សម្រាប់ instance គឺបង្ហាញជាពណ៏ក្រហម “no block” បង្ហាញថា false ។

ក កំណត់ Identifier Field(s)

Fields ដែលផ្ទុកនូវ link ដើម្បី edit pages គឺបានហៅដោយ identifier fields។ វាធ្វើអោយ field ភ្ជាប់ទៅ edit page ដូចនេះអ្នកអាចបន្ថែមវាជា identifier fields ដើម្បីធ្វើដូចនេះបានគឺត្រូវប្រើប្រាស់ ListMapper#addIdentifier() ជំនួសនូវ ListMapper#add()

sonata_identifier

ខ ការបង្ហាញ Models

ពេលនេះអ្នកប្រហែលជាចង់អោយ Category ធ្វើការបញ្ចូលទៅក្នុង list ។ ដូចនេះអ្នកត្រូវធ្វើការ reference វា អ្នកមិនអាចបន្ថែម category field ទៅ list mapper បានដូចទៅនឹងវានឹងធ្វើការបង្ហាញ entity ជា string។ ដូចដែលអ្នកធ្លាប់បានរៀនកាលពីមេរៀនមុន គឺការបន្ថែម __toString ទៅកាន់ entity គឺមិនត្រូវបាន recommend ថាល្អឡើយ។ សំណាងល្អ នេះជាវិធីងាយស្រួលក្នុងការ reference model ផ្សេងទៀតដោយប្រើប្រាស់ dot notation។ ការប្រើប្រាស់ notation នេះ អ្នកអាចបញ្ជាក់ថា fields ណាមួយដែលអ្នកចង់បង្ហាញ។ សម្រាប់ instance គឺ category name នឹងបង្ហាញឈ្មោះ property នៃ category។

នេះជាឧទាហរណ៏នៃការ បង្ហាញ Model៖

sonata19

២ ការបន្ថែម Filter/Search Options

សន្មតថាអ្នកមាន blog site មួយដែលផ្ទុកនូវ blog posts ជាច្រើន។ បន្ទាប់ពីនោះគឺ ស្វែងរក blog post ដែលអ្នកត្រូវការកែប្រែ ដូចទៅនឹងការស្វែងរកម្ជុលមួយនៅក្នុងគំនរចំបើង។ ដូចគ្នាទៅនឹងបទពិសោធន៏នៃអ្នកប្រើប្រាស់ Sonata ផ្ដល់នូវដំណោះស្រាយសម្រាប់វាបាន។ វាអាចធ្វើបានដោយសារការអនុញ្ញាតអោយអ្នកចូលទៅ configure datagrid filter ក្នុង Admin#configureDatagridFilters() method។ ដើម្បីអោយការ filter/search មានដំណើរការបានគឺធ្វើដូចខាងក្រោម៖

sonata20

វានឹងបន្ថែម block តូចមួយទៅខាងឆ្វេងនៃ block ដែលបង្ហាញ search input សម្រាប់ title field។