Ошибка Catalyst FormFu DBIC — использование записи через точку в наборе результатов
Я унаследовал приложение Perl Catalyst, которое пытаюсь перенести на новый сервер. Приложение использует FormFu с модулем HTML::FormFu::Model::DBIC, используемым для загрузки данных из набора результатов.
У меня есть таблица DBIx, скажемMyTable
, с автоматически созданной реализацией Result и пользовательской реализацией ResultSet. В пользовательской реализации ResultSet есть несколько подпрограмм, напримерsub my_sub
, которые возвращают отфильтрованные подмножества данных.
В файле FormFu YAML следующее извлечет все записи из MyTable:
elements:
- type: Select
model_config:
resultset: MyTable
Это эквивалентно извлечению в контроллере$schema->resultset('MyTable')
. Это правильно выполняется как на старом сервере, так и на новом сервере.
На старом сервере я могу использовать точечную нотацию для вызова подпрограммы для получения подмножества записей, которые она возвращает, следующим образом:
elements:
- type: Select
model_config:
resultset: MyTable.my_sub
Это эквивалентно извлечению в контроллере,$schema->resultset('MyTable')->my_sub
. Это выполняется правильно на старом сервере. На новом сервере в FormFu выдает ошибку:
Не удается найти источник для MyTable.my_sub в /[...]/HTML/FormFu/Model/DBIC.pm
Я добавил отладку в модуль FormFu DBIC.pm, чтобы посмотреть, делает ли он что-то особенное. Код, который он вызывает,$schema->resultset($rs_name);
гдеrs_name
это имя, данное вresultset
параметр "MyTable.my_sub" и$schema
имеет типMoose::Meta::Class::__ANON__::SERIAL
, который я предполагаю, является своего рода оболочкой. В контроллере Catalyst схема имеет типmyapp::Schema
.
Что мне не хватает? Есть ли какой-то параметр конфигурации, который мне нужно установить? Какой модуль мне нужно установить? Я не могу найти никакой документации или примеров, которые показывают набор результатов FormFu с точечной нотацией, но на старом сервере это работает.