ស្វែងយល់អំពី Routing នៅក្នុង Symfony3
Route គឺជាប្រព័ន្ធប្រតិបត្តិការសម្រាប់ធ្វើការកំណត់នូវ URL ដែលនៅក្នុងការស្នើរសុំទៅកាន់មុខងាររបស់ controller ដែលបានហៅទៅកាន់ដំណើរការនៃការស្នើរ។ វាទាំងពីរអាចអោយអ្នកកំណត់ URLs បានយ៉ាងជាក់លាក់និងស្អាត។ Route ជា bidirectional mechanism មានន័យថាយើងអាចប្រើប្រាស់វាបានក្នុងការបង្កើត URLs ។
ឧទាហរណ៏នៃ route ៖
ប្រសិនបើអ្នកចង់ធ្វើការផ្គូរផ្គង URL ណាមួយដូចជា /blog/my-post រឺក៏ /blog/all-about-symfony និងផ្ញើរវាទៅកាន់ controller ដែលអាច render blog entry មួយនោះ គឺ route អាចធ្វើបាន ព្រោះ route អាចធ្វើការ map ពីទីតាំងរបស់ URL ទៅកាន់ controller ។
ប្រសិនបើ អ្នកប្រើសប្រាស់ចូលទៅកាន់ /blog នោះ route ទីមួយនិឹងត្រូវបានផ្គូផ្គង ហើយ listAction() និងធ្វើប្រតិបត្តិការ។
ប្រសិនបើអ្នកប្រើសប្រាស់ចូលទៅកាន់ /blog/* នោះ route ទីពីរនឹងត្រូវបានផ្គូផ្គងហើយ showAction() និងធ្វើប្រតិបត្តិការ ព្រោះទីតាំងនៃ route គឺ /blog/{slug}។ អថេរ $slug គឺបានបោះទៅបាន showAction() ដែលត្រូវនឹងតម្លៃនោះ។
នៅពេលដែលអ្នកមាន {កន្លែងដាក់} នៅក្នុងទីតាំងនៃ route ផ្នែកនោះនឹងក្លាយទៅជាតួអក្សរជំនួសមួយ វាត្រូវគ្នានឹងតម្លៃណាមួយ។ ពេលនេះ controller នឹងមានអាគុយម៉ង់ (argument) មួយដែលហៅថា $placeholder (តួអក្សរជំនួសនិងអាគុយម៉ង់ត្រូវតែផ្គូរផ្គងនឹងគ្នា) ។ route នីមួយៗគឺមានឈ្មោះខាងក្នុងដូចជា blog_list និង blog_show រឺអាចជាអ្វីផ្សេង (ឈ្មោះអាចវែងតែត្រូវតែមានតែមួយគត់) ដែលអ្នកនឹងប្រើវាដើម្បីបង្កើត URL នៅពេលក្រោយ។
១ ការបន្ថែមតួជំនួស
ប្រសិនបើអ្នកមាន blog post ច្រើនដែលផ្ទុកនៅក្នុង blog_list route គឺត្រូវធ្វើតាមរបៀបនេះ៖
\d+ គឺជា regular expression ដែលត្រូវនឹងខ្ទង់នៃប្រវែងណាមួយ។
២ ការកំណត់តម្លៃដើមអោយតួជំនួស
ឧទាហរណ៏នៃ route កម្រិតខ្ពស់ (Advance)៖
៣ ការ Loading Routes ៖
ជាទូទៅ Symfony ធ្វើការ loads annotation route ពី AppBundle របស់ Controller/ ហើយ Symfony loads routes ទាំងអស់នៃ application របស់អ្នកពី ឯកសារកំណត់រចនាសម្ព័ន្ធរបស់ route រឺក៏ (single routing configuration file) : app/config/routing.yml. តែអ្នកក៏អាច load ឯកសារ route ផ្សេងទៀតតាមដែលអ្នកត្រូវការបានដែរ។
៤ ការបង្កើត URLs ៖
អ្នកចាំបាច់ត្រូវកំណត់ឈ្មោះជាក់លាក់ណាមួយអោយ route (ឧទាហរណ៏ blog_show ) និងតួជំនួសផ្សេងទៀត (ឧទាហរណ៏ slug = my-blog-post) ដើម្បីធ្វើការបង្កើត URL.
method generateUrl() បានកំណត់នៅក្នុង base Controller
class ។
៥ ការបង្កើត URL ជាមួយនឹង Query String ៖
៦ ការបង្កើត Absolute URLs ៖
router នឹងធ្វើការបង្កើត relative URLs (ឧទាហរណ៏ /blog) ហើយ controller បោះ UrlGeneratorInterface::ABSOLUTE_URL ទៅកាន់អាគុយម៉ង់ទី៣នៃ method generateUrl() ។