Вопрос разработки веб-приложения Catalyst, связанный с реализацией шаблона - PullRequest
0 голосов
/ 24 марта 2011

Я только начинаю с Catalyst и все еще пытаюсь обдумать это, поэтому, пожалуйста, потерпите меня.

Мне нужно сгенерировать таблицу (HTML) того, что равносильно ссылкам на конкретныезаписи базы данных.Записи охватывают множество таблиц базы данных.Эта таблица (HTML) должна вести себя как меню в уже определенном шаблоне оболочки.При щелчке элемента этой «таблицы меню» должна быть загружена страница с «таблицей меню», а также с выбранным содержимым записи под ней (либо для просмотра, либо в виде формы для редактирования).

Моя мысль состоит в том, чтобыиспользовать цепные действия / методы для создания контента (достаточно просто).Затем используйте один шаблон (template toolkit), чтобы определить, отображаем ли мы только «таблицу меню» или «таблицу меню» и представление выбранной записи, или «таблицу меню» и форму для редактирования выбранной записи.Например, шаблон всегда будет генерировать «таблицу меню», но в зависимости от того, используется ли он действием / методом FormFu, он может создавать или не создавать форму для редактирования выбранной записи.Таким образом, шаблон будет иметь условный код для отображения или редактирования записей.

Похоже, что шаблон в шаблонном решении типа требуется.Может кто-то с опытом работы с Catalyst пролить свет?Может быть, прокомментируете, направляюсь ли я в правильном направлении?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Как прокомментировал Horus, наилучший ответ на этот вопрос зависит от того, знает ли серверная сторона состояние (просмотр или редактирование) рассматриваемого объекта.

Не забывайте, что TT предлагает вам возможность INCLUDE или PROCESS другого шаблона в существующем. Таким образом, предполагая, что сторона сервера (и, следовательно, TT) знает состояние объекта, что-то вроде этого должно быть довольно простым:

WRAPPER "wrapper.tt";
PROCESS "menu.tt" IF is_menu;
SET tmpl = is_edit ? "edit" : "view";
PROCESS "$tmpl.tt";

При таком подходе вы можете сделать вещи СУХИМ.

1 голос
/ 06 апреля 2011

Если вы знаете состояние объектов при выполнении вызова сервера (а не на стороне клиента), тогда вы сможете решить эту проблему, используя стандартные операторы IF и BLOCK, доступные в наборе шаблонов.BLOCK предоставит вам шаблон в шаблоне (с переменными), и IF-ELSE-END также доступен.Пожалуйста, смотрите документацию здесь:

http://template -toolkit.org / docs / manual / Directives.html

Однако, если вы знаете только сторону клиента, тогда Mugenв комментариях правильно, если бы я кодировал что-то подобное на короткой временной шкале, я бы написал страницу ajax, а затем использовал бы клон jQuery для шаблона div, чтобы заполнить данные и построить меню относительно быстро, после созданияКонечно, вызов ajax:

http://api.jquery.com/clone/

http://api.jquery.com/jQuery.ajax/

Но я не могу быть уверен в данных спецификациях и без какого-либо кода для просмотра.

...