Pathfinder: доступ к моделям администратора из внешнего интерфейса

В моем приложении (находящемся в подкаталоге webroot) у меня есть область администратора с моделями для поиска типов категорий. В основном интерфейсном приложении у меня есть другие модели со ссылками на поиск, определенный в Admin. Например. Model Expense определяется во внешнем интерфейсе, он имеет ссылку на Model ExpenseType (который является подклассом Model Lookup, определенным в Admin/lib/Model:

webroot
    My atk4 project
     -admin
        -lib
           -Model
              -Model_Lookup with subclass ExpenseType
     -atk4
     -atk4-addons
     ..
     -lib
        -Model
           -Model_Expense with reference to model ExpenseType
     ...

При открытии страницы расходов с помощью CRUD -> setModel('Expense') я получаю "фатальную ошибку" - Model_ExpenseType не может быть найден. Итак, насколько я понимаю (только начиная с atk4), мне нужно добавитьLocation в Pathfinder, но я не знаю, как это сделать, чтобы модели Frontend могли получить доступ к моделям администратора.


person user1207810    schedule 19.02.2012    source источник
comment
Не решил проблему, но реализовал рабочее решение: переместил все модели из admin/lib/Model в lib/Model. Страница расходов по-прежнему не может найти Model_ExpenseType, который является подклассом Model_Lookup. Когда я заменил Model_ExpenseType на Model_Lookup для ссылки на Expense, все заработало нормально. Поэтому я переместил Model_ExpenseType в отдельный файл, так что теперь я все еще не уверен, какой подход лучше, но все работает так, как ожидалось.   -  person user1207810    schedule 20.02.2012


Ответы (2)


пытаться

$this->pathfinder->addLocation('admin',array(
    'php'=>'lib'
));

внутри вашего Api::init()

person romaninsh    schedule 20.02.2012
comment
Большое спасибо! Оказывается, я был не за горами — у меня было $this-›addLocation вместо $this-›pathfinder-›addLocation. Одна вещь остается немного туманной: модель Expense, определенная во Frontend, находит ExpenseType (подкласс Lookup, определенный в Admin), только когда он находится в отдельном файле, тогда как модель Material (определяемая в Admin) находит модель MaterialType (еще один подкласс Lookup), определенный в Lookup. .php, независимо от того, находятся ли модели поиска в Admin или Frontend. Каков путь? я должен всегда размещать подклассы моделей в их собственном файле) Спасибо. - person user1207810; 21.02.2012
comment
желательно, чтобы каждый класс был в соответствующем файле. также попробуйте переименовать файл и изучите вывод об ошибке, он сообщит вам, в каких местах выполняется поиск, возможно, последовательность местоположений отличается, и это может привести к тому, что сначала будут найдены разные файлы. - person romaninsh; 21.02.2012

Я иногда делаю так:

given: webroot/lib/Model

cd webroot/admin/lib
ln -s ../../lib/Model .
person jancha    schedule 02.04.2012