LINUX.ORG.RU

PHP, XSLT, MVC, объекты...


0

0

Попробовал сейчас для демонстрации написать шаблонизатор объектов фреймворка XSLT.

В принципе, ничего сложного, всё в единицы строк укладывается, но есть одна принципиальная проблема.

Если я правильно понял, то XSLT-процессор принимает данные только в виде DOM. И передать PHP-объект туда нельзя в принципе.

Значит, все нужные в шаблоне данные нужно извлекать из объектов дополнительным действием.

Т.е. получаем, скажем, массив объектов, а потом трансформируем его в DOM-объект, указывая нужные аргументы в коде.

Некрасиво + правки во View тянут за собой правки в Code.

Есть мысли, как этого избежать?

★★★★★

s/правки в Code./правки в Controller./

KRoN73 ★★★★★
() автор топика

Кто мешает тебе написать одну маленькую универсальную функцию, которая будет перегонять объекты в DOM?

З.Ы. А вообще это тормоза. Лучше транслировать шаблоны в ПХП код.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>Кто мешает тебе написать одну маленькую универсальную функцию, которая будет перегонять объекты в DOM?

Часто у объекта полей много, а для конкретной страницы нужны далеко не все. Так что передавая надо указывать их явно.

В общем, решил вопрос не особо красиво, но лучше пока не придумал.

Передавая списки объектов для насыщения шаблона передаю и один псевдопараметр, ассоциативный массив, где расписано, для каких объектов какие параметры извлекать в DOM-дерево.

>З.Ы. А вообще это тормоза.

Просто понадобилось тут для иллюстрации того, что и XSLT-шаблонизатор прикручивается к моему фреймворку без особых проблем.

...

Правда, задача пока ещё в недоведённом виде осталась. Всё ещё затык на трансляции чистого ассоциативного массива в DOM-дерево :)

В остальном же всё решается в считанные строки.

...

А так - да, XSLT оказался достаточно неудобен. И, в первую очередь тем, что расширяя дизайн шаблона может понадобиться в код лезть. Запросить дополнительные параметры...

KRoN73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.