Codeigniter ส่วน URL พิเศษ

ฉันกำลังสร้างเว็บไซต์สำหรับลูกค้าและตัดสินใจว่าจะใช้ตัวจุดไฟโค้ด

ไซต์นี้มีแบ็กเอนด์สองส่วน หนึ่งอันสำหรับนักออกแบบและอีกอันสำหรับทีมขาย ดังนั้นหลังจากเข้าสู่ระบบ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปที่อย่างใดอย่างหนึ่ง

  • mysite.com/sales/
  • mysite.com/design/

ตัวอย่างเช่น ทีมขายสามารถดูคำสั่งซื้อ คอนเทนเนอร์ ผลิตภัณฑ์ได้ ดังนั้นฉันจึงต้องมีตัวควบคุมสำหรับแต่ละสิ่งเหล่านี้

  • mysite.com/sales/orders/

ฝ่ายขายต้องสามารถดู แก้ไข ลบ ออเดอร์บางรายการได้...

  • mysite.com/sales/orders/vieworder/235433

โดยพื้นฐานแล้วปัญหาของฉันคือฉันไม่มีกลุ่ม URL เพียงพอที่จะเล่นด้วย

ความคิดของฉันในการแก้ปัญหาของฉัน

  • ลบคำสั่งซื้อ คอนเทนเนอร์ คลาสผลิตภัณฑ์ และทำให้วิธีการทั้งหมดเป็นวิธีการของคลาสการขาย แม้ว่านี่จะหมายถึงวิธีการจำนวนมากและการโหลดแบบจำลองทั้งหมด ดังนั้นมันจึงดูไร้จุดหมาย

  • ลบคลาสการขาย/นักออกแบบ และควบคุมสิ่งที่ผู้ใช้แต่ละประเภทสามารถเข้าถึงได้โดยพิจารณาจากประเภทผู้ใช้ที่จัดเก็บไว้ในข้อมูลเซสชัน

  • วิธีการมีส่วน URL พิเศษ?

ขอขอบคุณสำหรับคำแนะนำใดๆ ฉันแค่ไม่ต้องการใช้เวลา 3 สัปดาห์ในโครงการนี้และตระหนักว่าฉันเริ่มผิดตั้งแต่ต้น!


person callum.bennett    schedule 13.07.2011    source แหล่งที่มา
comment
ขออภัย คุณขาดส่วน URL พิเศษไปได้อย่างไร อะไรหายไป?   -  person Herr    schedule 13.07.2011
comment
สวัสดี. คุณอ้างว่าฉันบอกว่าหายไปแม้ว่าฉันจะไม่ทำก็ตาม? ฉันแค่ต้องการวิธีที่จะอนุญาตให้ทีมขายเข้าถึงคลาสบางคลาสและวิธีการของพวกเขา และอนุญาตให้นักออกแบบเข้าถึงคลาสเดียวกันบางคลาส แต่ไม่ใช่ทุกวิธีของพวกเขา   -  person callum.bennett    schedule 13.07.2011
comment
เหตุใดผู้ใช้จึงไม่มีสิทธิ์เข้าถึงบางประเภทผ่านทาง DB และป้องกันไม่ให้ฟังก์ชันดำเนินการหากผู้ใช้/ผู้ออกแบบไม่มีสิทธิ์   -  person Herr    schedule 13.07.2011
comment
นั่นเป็นหนึ่งในความคิดของฉัน แม้ว่าฉันจะไม่แน่ใจว่านั่นจะเป็นวิธีที่ดีที่สุดที่จะทำหรือไม่ นั่นเป็นวิธีที่ดีที่สุดแล้วเหรอ?   -  person callum.bennett    schedule 13.07.2011
comment
แน่นอนว่าคุณควรจะทำให้มันแตกต่างออกไปอย่างไรโดยไม่ต้องใช้ความพยายามสูงสุด? :)   -  person Herr    schedule 13.07.2011


คำตอบ (3)


ใช้โฟลเดอร์

หากคุณสร้างโฟลเดอร์ย่อยใน /application/ ชื่อ sales คุณสามารถใส่ตัวควบคุมอื่นเข้าไปได้:

/application/
    /sales/
      orders.php /* Controller */
    /design/

จากนั้นใน orders.php คุณจะต้องใส่วิธีการ vieworders($id) ของคุณไปเรื่อยๆ และคุณจะสามารถเข้าถึงมันได้ด้วย domain.com/sales/orders/vieworders/id

คุณยังสามารถสร้างโฟลเดอร์ย่อยใน /models/ และ /views/ เพื่อจัดระเบียบไฟล์ของคุณได้

ตอนนี้ การควบคุมการเข้าถึงเป็นสิ่งที่แตกต่างออกไปและขึ้นอยู่กับระบบการตรวจสอบสิทธิ์ที่คุณใช้มากกว่า

person ramono    schedule 13.07.2011

ให้สิทธิ์แก่ผู้ใช้/นักออกแบบ เช่น คอลัมน์ในตารางผู้ใช้ ตรวจสอบสิทธิ์ของผู้ใช้ที่จุดเริ่มต้นของฟังก์ชัน จากนั้นป้องกันหรือดำเนินการ

นี่คงเป็นวิธีที่ฉันจะทำอย่างแน่นอน

person Herr    schedule 13.07.2011

ดูเหมือนว่าคุณควรจะดูคลาสการกำหนดเส้นทาง อาจเป็นวิธีแก้ปัญหาที่สกปรก แต่การเปลี่ยนเส้นทาง sales/(:any) เป็น sales_$1 หมายความว่าคุณจะต้องสร้างคอนโทรลเลอร์ด้วยชื่อเช่น sales_orders เช่นเดียวกับส่วนการออกแบบ

(เพื่อแจ้งให้ทราบ: $routing['sales/(:any)'] = 'sales_$1'; ควรทำเคล็ดลับ ดูที่ application/config/routing.php)

person Community    schedule 13.07.2011