อายุสิ้นปีหมดไปอีกปี


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

คู่มือการเรียนรู้ Yii Framework 2 (Yii2)

บทเรียนดีๆ สำหรับผู้ที่ต้องการแบ่งปัน บทเรียนของคุณอาจมีค่าสำหรับอีกหลายๆ คน

beta version

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

มานพ กองอุ่น yii routing 1572

จาก 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
กลับขึ้นบน