ทำความเข้าใจเส้นทาง (Routing) ใน Yii Framework 2

wave
มานพ กองอุ่น 22 เม.ย. 2016 13:07:26 13,384

จาก 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

 


ความคิดเห็น

หากบทเรียนรู้มีความผิดพลาดประการใด หรือมีข้อเสนอแนะกรุณาแจ้ง contact@programmerthailand.com

เขียนบทเรียนรู้ของคุณ

รายละเอียด
  • ดู 13,384
  • รักเลย 0
  • หมวดหมู่ Yii Framework 2 (Yii2)
  • เขียนเมื่อ
  • แก้ไขเมื่อ
  • Tags yii routing
ข้อมูลผู้เขียน
มานพ กองอุ่น

มานพ กองอุ่น

เป็นสมาชิกเมื่อ: 18 ธ.ค. 2009

เนื้อหาที่เกี่ยวข้อง