2016-05-23 24 views
5

Tôi đang sử dụng Codeigniter 3.x, Sử dụng routes.php Tôi muốn tạo các tuyến động, ví dụ tôi có tên lớp Class1.Sử dụng dấu gạch nối (-) thay vì dấu gạch chéo (/) hoặc dấu gạch dưới (_) trong Tuyến đường

Tôi muốn đầu ra url

mysite.com/Class1-Student-Search

Nhưng sử dụng dấu gạch ngang (-) không được làm việc

Nếu tôi đặt một dấu gạch chéo (/), nó hoạt động,

$route['(:any)/Student-Search'] = "search"; 

nó trả

mysite.com/Class1/Student-Search

và sử dụng dấu gạch dưới (_) cũng làm việc.

$route['(:any)_Student-Search'] = "search"; 

lợi nhuận

mysite.com/Class1_Student-Search

Nhưng tôi muốn sử dụng dấu gạch ngang (-), nếu tôi đặt nó, nó sẽ đi đến lỗi 404 trang, tôi đã sử dụng bốn giải pháp này nhưng không làm việc cho tôi.

$route['(:any)-Student-Search'] = "search"; 
$route['([a-zA-Z]+)-Student-Search'] = "search"; 
$route['([a-zA-Z-0-9]+)-Student-Search'] = "search"; 
$route['(.*)-Student-Search'] = "search"; 

Và nếu tôi hardcode các giá trị trong đường

$route['Class1-Student-Search'] = "search"; 

Sau đó, nó cũng làm việc

+0

Bạn đã đặt '$ route ['translate_uri_dashes'];' thành 'TRUE' ?? – Saty

+0

vâng tôi đặt nó @Saty –

+0

Đó là một cụm từ thông dụng. Cố gắng thoát chúng: '\\ - Student \\ - Tìm kiếm ' –

Trả lời

2

Bạn đang cố gắng để tạo ra một tuyến đường năng động đó là không thể trong CodeIgniter nếu bạn thấy thông tin sau biểu đồ dòng chảy của codeigniter bạn hiểu những gì tôi có ý nghĩa.

enter image description here

bạn cũng có thể xem biểu đồ này trong CodeIgniter chính thức website

khi bạn cố gắng để chuyển hướng hoặc gọi số url nó làm việc như thế này

enter image description here

Mỗi yêu cầu đầu tiên đi vào tuyến đường ở đó cho bạn không thể làm cho nó hoạt động

+2

Trang web chính thức của Codeigniter hiện là http://www.codeigniter.com và bây giờ bạn có thể tìm thấy cả hai tài liệu ở đây http://www.codeigniter.com/docs Ellislab không xử lý CI nữa. Nhưng vì lý do nào đó họ vẫn có liên kết. – user4419336

-1

Đây là giải pháp của tôi, nó làm việc cho tôi, làm như thế này.

$route['(:any)-Student-Search'] = "search"; 

sau đó trong nút liên kết của bạn, hy vọng trong chế độ xem của bạn, href liên kết như thế này.

href="/<?php echo $row->classname; ?>-Student-Search" 

điểm không chỉ là bạn phải tạo tuyến đường, cũng có thể liên kết trong liên kết href của bạn theo cách tương tự.

+0

Điều đó có nghĩa là (: bất kỳ) có nghĩa là trong câu trả lời của bạn, điều đó có nghĩa là cuộc gọi của bạn trước tiên sẽ đến các cuộc routs sau đó routs kiểm tra để đi bất kỳ callas nào. anh chàng đó muốn gọi lớp đầu tiên sau đó tuyến đường mà không thể trong codeigniter –

+0

(: bất kỳ) có nghĩa là id thực tế anh ta đi qua, các tuyến đường sẽ kiểm tra số id và sau đó đi đến lớp. Ông có thể chuyển id vào tuyến đường, sau đó truy vấn dữ liệu và tải các chi tiết liên quan của nó. – Prakash

+0

đọc toàn bộ câu hỏi chăm sóc anh ta muốn gửi yêu cầu đến một số lớp nơi anh ta muốn xác định một số chức năng và sau đó nhấn các cuộc đua mà không thể. –

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