2016-10-19 20 views
6

Có thể sử dụng Altorouter để tạo thiết lập định tuyến đa ngôn ngữ không? Tôi muốn gửi một biến với tệp đích (để nó hiển thị nội dung khác nhau khi được xem), ví dụ: -Altorouter đa ngôn ngữ định tuyến

$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th'); 

Nhưng thông số thứ năm đó không có sẵn. Có cách giải quyết nào cho vấn đề này không?

Trả lời

4

Bạn có thể sử dụng đối sánh mẫu trong URL để đạt được điều này, nếu URL ngôn ngữ của bạn đủ thường xuyên.

Theo documentation định tuyến đường

$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample') 

sẽ chụp 'th' trong $lang khi URL '/th/work/sample' là hit. Nếu bạn cần kết hợp mẫu phức tạp hơn, có thể chỉ định các regex tùy chỉnh.

2

$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');

Nhưng đó tham số thứ năm là không có sẵn. Có cách giải quyết nào cho vấn đề này không?

Đó là vì chức năng bản đồ không hỗ trợ tham số thứ năm.

public function map($method, $route, $target, $name = null)

source code AltoRouter.php:map

Bạn có thể gọi match chức năng đi qua trong tuyến đường ban đầu nếu bạn nào đó có thể đánh chặn và nhận được mã của bạn để làm việc trước khi router. Hàm kết quả trả về cho bạn tên tuyến. Nhưng điều này có nghĩa là bạn tạo các tuyến đường được đặt tên cho từng ngôn ngữ và sau đó bạn sẽ bắt đầu đánh giá cao giải pháp được cung cấp bởi @gbe

$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')

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