วันพฤหัสบดีที่ 10 มีนาคม พ.ศ. 2559

สร้าง modules ซ้อนใน Module 01-เกริ่นนำ

เนื่องจากผมได้สร้าง CMS ขึ้นมาตัวนึงด้วย Yii 2 Advance template แบ่ง frontend และ backend ตามปกติ แต่เจ้าหน้าบ้านกับหลังบ้านเนี่ยะใช้ assets ของไครก็ของมัน จึงทำให้ resource เดียวกันถูกคัดลอกไปอยู่ทั้งหน้าบ้านและหลังบ้าน ถ้ารวมต้นฉบับที่ถูกเก็บไว้ในโฟลเดอร์ vendor แล้วกลายเป็นว่า resource อันเดียวถูกเก็บไว้ถึง 3 ที่ แล้วสมมุติ resource ที่มีขนาดใหญ่มากๆ เช่น mpdf ซึ่งมีขนาด 100MB+ ก็จะถูกโคลนไปทั้งหน้าบ้านและหลังบ้าน เปลืองพื้นที่เปล่าๆ จึงเริ่มเปลี่ยนใจกลับมาใช้ ฺBasic template ดีกว่า(มั้ย) เพื่อที่จะมี resource แค่ใน vendor และ assets

 ปกติเมื่อใช้ Basic template แล้วถึงแม้เราจะทำโมดูลแยกการทำงาน url มันก็จะเป็น r=module/controller/action เสมอ แต่ความต้องการของผมอยากให้ url มันเป็นแบบนี้
r=webManager/module1/controller/action
r=webManager/module2/controller/action
r=webManager/module3/controller/action
...
พอจะเข้าใจนะ ก็เลยหาวิธีที่จะเอาโมดูลไปซ้อนในโมดูลอีกทีนึง จึงได้ไปเจอคำสั่งนี้
http://www.yiiframework.com/doc-2.0/yii-base-module.html#setModules()-detail

$this->setModules([
    'comment' => [
        'class' => 'app\modules\comment\CommentModule',
        'db' => 'db',
    ],
    'booking' => ['class' => 'app\modules\booking\BookingModule'],
]);

เห็นโค๊ดแล้วพอจะเข้าใจแล้วเนาะ ก็แค่เอา Arrays ไปใส่ในคำสั่ง setModules (มี s ด้วยนะ) จะเป็นยังไงต่อ เดี๋ยวค่อยมาเขียนต่อตอน 2 นะครับ