2013-02-15 45 views
5

Tôi đã học cách lập trình ứng dụng bằng cách sử dụng khung công tác Mojolicious và tôi bị bối rối là tại sao bạn sử dụng tên tuyến đường. Ví dụ: một tuyến đường có thể nóiMục đích của tên tuyến đường trong mojolicious là gì?

$r->route('/cities/new') 
     ->via('get') 
     ->to(controller => 'cities', action => 'new_form') 
     ->name('cities_new_form'); 

Nhưng mục đích của thông số tên là gì? Tôi mới vào khung web, vì vậy có lẽ điều này có một câu trả lời nhỏ cho nó.

Trả lời

16

Đặt tên cho tuyến đường cho phép bạn tham chiếu sau nếu bạn muốn tạo URL động. Với ví dụ của bạn, bạn có thể làm điều này sau trong mã của bạn:

my $link = $self->url_for('cities_new_form') 

$link sẽ tự động được dân cư với một URL kết thúc bằng /cities/new. Bạn có thể được ưa thích nếu tuyến đường của bạn có các bộ phận động. Ví dụ:

$r->route('/cities/:cityname') 
    ->via('get') 
    ->to(controller => 'cities', action => 'new_form') 
    ->name('cities_new_form'); 

Sau đó, bạn có thể tạo ra một URL như

my $link = $self->url_for('cities_new_form', cityname => 'newyork'); 

$link sẽ kết thúc với /cities/newyork.

Đây là những ví dụ nhỏ, nhưng bạn có thể xây dựng những thứ khá phức tạp khi tuyến đường của bạn tham gia nhiều hơn.

Nếu bạn không đặt tên cho tuyến đường, tên sẽ nhận được tên mặc định chỉ là một phần nối của các ký tự chữ và số trong đó. Điều đó có thể tẻ nhạt cho các tuyến đường dài để bạn có thể sử dụng tên để viết tắt chúng.

Xem thêm Named Routes trong tài liệu Mojolicious.

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