Привет,
Я новичок в Catalyst и пытаюсь реализовать некоторую логику отправки.
В моей базе данных есть таблица элементов, каждый из которых имеет уникальное поле url_part
,и каждый элемент имеет родителя в одной и той же таблице, образуя древовидную структуру.Если baz
является дочерним по отношению к bar
, который является дочерним по отношению к foo
, который является дочерним по отношению к корню, я хочу, чтобы URL /foo/bar/baz
отображался на этот объект.Дерево может быть любой глубины, и пользователям потребуется доступ к любому узлу, будь то ветвь или лист.
Я просматривал документацию для связанных диспетчеров, но я не уверен, что это можно сделатьчто я хочу.Кажется, что каждый шаг в цепочечном диспетчере должен иметь определенное имя для атрибута PathPart
, но я хочу, чтобы мои URL-адреса определялись исключительно структурой базы данных.
Это легко реализовать с помощью существующего Catalystдиспетчер, или мне нужно написать свой собственный класс диспетчеризации?
Спасибо!:)
ETA:
Я понял, что могу использовать пустой атрибут Args
для перехвата произвольного числа аргументов.Кажется, что следующий запрос успешно перехватывает каждый запрос в корне:
sub default :Path :Args() {
my ( $self, $c ) = @_;
my $path = $c->request->path;
$c->response->status( 200 );
$c->response->body( "Your path is $path" );
}
Оттуда я могу вручную проанализировать путь и получить то, что мне нужно, однако я не знаю, является ли это лучшим способом выполнитьчто я после.