@ Девендра Я думаю, что твои примеры могут как-то вводить в заблуждение, если кто-то их читает.
uri_for ожидает путь (а не действие). Он возвращает абсолютный объект URI, поэтому, например, он полезен для ссылки на статический контент или в случае, если вы не ожидаете, что ваши пути изменятся.
Так, например, допустим, что вы развернули свое приложение на домене example.com и в подпапке abc (example.com/abc/): $c->uri_for('/static/images/catalyst.png')
вернет example.com/abc/static/images/catalyst.pn или, например: $c->uri_for('/contact-us-today')
вернет example.com/abc/contact-us-today. Если позднее вы решите развернуть приложение в другом подкаталоге или в / вы все равно получите правильные ссылки.
Предположим, что ваше действие contact-us выглядит следующим образом: sub contact :Path('/contact-us-today') :Args(0) {...}
, и вы решите позже, что / contact-us-today должно стать просто / contact-us. Если вы использовали uri_for('/contact-us-today')
, вам нужно найти и изменить все строки, которые указывают на этот URL. Однако вы можете использовать $c->uri_for_action('/controller/action_name')
, который вернет правильный URL.