เวลาเรากำหนด router เพื่อจะใช้ map path กว่าถ้ามีการ request ตาม pattern ของ path ที่กำหนด จะให้ไปเรียก NameController.action ฟังก์ชันไหน ตัว Phoenix เองมันจะ generate Helper module ที่มี helper function ในการสร้าง URL endpoint ให้ด้วย ซึ่ง กฎในการสร้างมีคร่าวๆแบบนี้
1. มันจะใช้ชื่อ controller เป็น prefix เช่น
post "posts", PostController, :create
มันก็จะสร้าง helper function ให้สองชื่อคือ
post_path
post_url
2. ถ้าเราไม่อยากได้ชื่อ controller เราสามารถกำหนดเองได้ด้วย option :as
เช่น
post "posts", PostController, :create, as: "my_post"
มันก็จะสร้าง helper function แบบนี้แทน
my_post_path
my_post_url
3. ถ้าเกิดมี resources ซ้อนกัน มันก็จะตั้งชื่อ helper โดย prefix ด้วยชื่อ controller ที่ซ้อนกันเช่น
resources "/users", UserController do
resources "/posts", PostController
end
มันก็จะสร้าง helper function แบบนี้
user_post_path
user_post_url
ถ้าเราเปลี่ยนไปใช้ option :as
มันก็จะเอา as ของทั้งสองอันมาต่อกันแทน
4. ถ้ามี scope แล้ว scope ใส่ option :as
ไปด้วย มันจะเอา option ของ scope มาเป็น prefix ด้วย เช่น
scope "/admin", HelloWeb.Admin, as: :admin do
pipe_through :browser
resources "/reviews", ReviewController
end
มันก็จะสร้าง helper function แบบนี้
admin_review_path
admin_review_url
Ref: https://hexdocs.pm/phoenix/routing.html
ขอฝาก Buy Me a Coffee
สำหรับท่านใดที่อ่านแล้วชอบโพสต์ต่างๆของผมที่นี่ ต้องการสนับสนุนค่ากาแฟเล็กๆน้อยๆ สามารถสนับสนุนผมได้ผ่านทาง Buy Me a Coffee คลิ๊กที่รูปด้านล่างนี้ได้เลยครับ
ส่วนท่านใดไม่สะดวกใช้บัตรเครดิต หรือ Paypal สามารถสนับสนุนผมได้ผ่านทาง PromptPay โดยดู QR Code ได้จากโพสต์ที่พินเอาไว้ได้ที่ Page DevDose ครับ https://web.facebook.com/devdoseth
ขอบคุณครับ 🙏
Top comments (0)