จาก URL ที่มีการเปิดหรือ request คือ index.php?r=blog/post/index ใน Yii Framework 2 จะมีการจัดการกับ URL ผ่าน request component ดังนี้
blog คือ ชื่อของ Module ซึ่งจะบรรจุอยู่ใน frontend/modules/blog/
post คือ ชื่อของ Controller ซึ่งอยู่ใน module blog จะอยู่ที่ frontend/modules/blog/PostController.php
index คือ ชื่อของ Action ซึ่งเป็น method หนึ่งที่อยู่ใน PostController.php และจะทำการ render ไฟล์ view ที่บรรจุอยู่ใน frontend/modules/blog/views/post/index.php
ซึ่งทั้งหมดเกิดขึ้นโดยอัตโนมัติโดยที่เราไม่ต้องไปกำหนด Routing เพิ่มเติม แต่หากต้องการกำหนดแตกต่างไปจากค่าเริ่มต้นก็สามารถกำหนดเพิ่มเติมได้ผ่าน UrlManager
ตัวอย่างการกำหนด urlManager
ไฟล์ frontend/config/main.php
'components' => [
//...
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'blog_all' => 'blog/post/index',
'<controller:\w+>/<id:\d+>' => '<controller>',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
],
],
//...
],
เวลาเรียกผ่าน URL จะเรียก frontend/web/blog_all ใน Yii Framework 2 จะไปเรียก blog/post/index มาแสดง นั่นเอง
หมายเหตุ ใน frontend/web ต้องสร้างไฟล์ .htaccess และมีข้อมูลต่อไปนี้
RewriteEngine on
# if a directory or file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
ความคิดเห็น