2011-01-10 50 views
8

Tôi hiện đang cố gắng chuyển một trong các ứng dụng chất xúc tác nhỏ hơn của tôi thành Mojolicious (chỉ để giải trí).Mojolicious url_for: đường dẫn tuyệt đối

Giả sử chúng tôi đang ở trên một trang: http://whatever.com/generate. Trên trang đó có một liên kết đến ví dụ như "tạo ra"

Khi sử dụng chất xúc tác (với các mẫu TT) và bạn xác định các liên kết như

uri_for 'generated' 

nó sẽ tạo ra một liên kết đến http://whatever.com/generate/generated Nhưng nếu bạn định nghĩa nó như

uri_for '/generated' 

nó sẽ tạo ra một liên kết đến http://whatever.com/generated

tôi cố gắng làm tương tự với url của Mojolicious, nhưng nó có vẻ hoạt động khác nhau. Nó không có được một sự thay thời tiết tôi gọi

url_for 'generated' 

hoặc

url_for '/generated' 

cả các cuộc gọi tạo ra một liên kết đến '/ tạo/tạo'

Vì vậy, câu hỏi của tôi là: làm thế nào để tôi tạo url_for tạo liên kết đến một tuyến đường tuyệt đối. ví dụ để '/ tạo'

cảm ơn, Gr, LDX

Trả lời

10

url_for tạo ra các url tương đối so với thư mục gốc ứng dụng. Điều đó đã được thực hiện cho tính di động: bạn có thể đặt ứng dụng của mình tại bất kỳ url nào và liên kết của bạn sẽ không bị hỏng.

Nếu bạn cần một liên kết đến đường dẫn tuyệt đối, tại sao bạn cần url_for hơn? Bạn chỉ có thể sử dụng một chuỗi '/generated'.

Từ Mặt khác, nếu bạn thực sự cần Mojo :: đối tượng URL mà bạn có thể lấy nó với

<%= url_for->path('/generated') %> 

url_for khi gọi mà không cần lợi nhuận params url hiện

+0

Thật vậy. Tôi đoán tôi vẫn còn trong một suy nghĩ chất xúc tác, luôn luôn sử dụng uri_for. Nhưng bạn nói đúng, tôi không cần url_for ở tất cả :-) – ldx

10

Bạn có thể dễ dàng có được một địa chỉ tuyệt đối từ url_for . Nó trả về một đối tượng Mojo :: URL, vì vậy bạn chỉ có thể sử dụng phương thức to_abs:

$ perl -Mojo -E 'a("/" => sub { $s=shift;$s->render(text=>$s->url_for("/")->to_abs) })->start' get/
http://localhost:13733/ 
Các vấn đề liên quan