2013-01-06 34 views
8

Tôi đang cố gắng sử dụng định tuyến trong CI để tạo ra một mẫu đăng kýMã đánh lửa tùy chọn tham số

signup là tái chuyển đến user/signup

Nhưng chức năng đăng ký của tôi có thể chứa một paramater: function signup($type = 1)

Làm thế nào tôi có thể thực hiện tùy chọn này thông qua định tuyến? Tôi đã thử $route['signup/?(:num)'] = 'user/signup/$1';, nhưng khi đi đến /signup Tôi nhận được 404, chỉ /signup/1/ hoạt động.

Trả lời

14

Cách rõ ràng nhất để diễn tả điều này có lẽ sẽ được tuyên bố cả hai tuyến đường:

$route['signup'] = "user/signup"; 
$route['signup/(:num)'] = "user/signup/$1"; 
+0

đó làm việc tốt, không nghĩ đến nó, tôi đã cố gắng tìm ra cách để làm cho nó tùy chọn. Cảm ơn! –

+0

Bản chỉnh sửa dường như không hoạt động, dường như không gửi tham số với nó –

+0

Cảm ơn, tôi nghĩ tôi thích giải pháp đầu tiên của bạn, dễ đọc/ghi nhớ hơn. –

12

Đối với bất cứ ai khác đọc này theo đúng trình tự - Tôi tin rằng câu trả lời nên $route['signup/?(:num)?'] mà làm cho số lượng tùy chọn là tốt. Tôi đã có vấn đề tương tự về một cái gì đó khác.

+0

Cảm ơn ** Ukuser32 **, câu trả lời của bạn phù hợp với tôi .. – Adnan

1

Sự cố với câu trả lời của @ Ukuser32 là nó cho phép URI như đăng ký69 được chấp nhận, trong trường hợp này có thể vô hại nhưng trong trường hợp chung là không mong muốn. Chỉ cần đặt các dấu gạch chéo với các bị bắt: num

$route['signup(/:num)?'] = "user/signup$1" 

Và lưu ý rằng nếu bạn có nhiều phân đoạn tùy chọn, sau đó bạn sẽ cần phải tổ họ ....

Các vấn đề liên quan