![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Вопрос в этом разделе, потому что адрессован профи!
Ситуация следующая: Допустим я написал класс(или даже пакет), который генерирует формы. Он выдает их оформленными в таблице. Хорошо. Как мне применить CSS к этим таблицам, если я использую Smarty? Допустим, что сгенерированный html-текст передаю в темплат. Есть 2 варианта: 1. Я задаю стиль при вызове класса из php-скрипта. Но дизайнер/верстальщик не будет мой скрипт смотреть. Он работает только с шаблоном. И НЕ СМОЖЕТ задать стиль для этой таблицы. А если ему еще надо будет дл конкретной ячейки задать стиль???? Вобщем разделение логики и содержимого теряется. 2. Мой класс дает мне только массив с переменными, а я уже сам строю таблицу в темплате и организую ее заполнение с помощью Smarty или другого шаблонизатора. Дизайнер теперь может спокойно управлять стилями таблицы, но теперь проблемы возникают у меня... Я должен из раза в раз печатать эту таблицу . Это, собственно, сводит на нет написанный мной класс и противоресит парадигме ООП. -------------------- Я просмотрел несколько CMS-ок: все идут по методу 1. А как вы решаете такую проблему??? |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 1 Всего: 8 |
php это не чисто ооп-язык и не стоит пытаться насильно его сделать таким - иначе получите массу трудно поддерживаемого и медленного кода
2 метод наиболее оптимален |
|||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Но метод 2 более энергозатратный для программера (по времени)
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
ничего не понятно. во-первых, это противоречит не принципу ООП, а принципу модульного проектирования. и, соответственно, повторного использования кода. во-вторых, если речь идет о шаблонизаторе, никто не мешает вынести формирование таблицы в отдельный шаблон. и в основном шаблоне будут только вызовы более мелких структурно шаблонов. и никакого "из раза в раз печатать". Добавлено через 50 секунд в смысле? при первом подходе(смешиваем формирование модели и представления в кучу) разве тебе не придется вытягивать данные? |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
qsajeal, PHP к оформлениею отношения не имеет. Его задача сгенерировать HTML код, а что там будет, html, css, javascript зависит только от того что вам надо. Как встроить стили лучшим образом, через PHP, можно сказать, увидев код. Вообще принято стили в .css файл сохранять, и в html просто генерировать строчку на его подключение. Все.
|
|||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Придется. Ну дак и что?
Так я просто вызову функцию, она мне даст переменную, я эту переменную отправлю в шаблон. 3 строчки. А иначе надо будет составлять таблицу. В каждую ячейку пихать переменные и проч. Еще можно это упростить циклами, которые предлагает Smarty.(про это я только что вспомнил ![]() + то что вы сказали с подшаблоном очень интересно. Пожалуй такое может мне подойти. Добавлено через 3 минуты и 1 секунду
Вы мне изложили сейчас суть метода 1. Верстальщик не будет просматривать php-код и в какой-то там параметр функции сувать название своего шаблона. Это сводит на нет весь смыслразделения Добавлено через 6 минут и 12 секунд т.е. дизайнер теряет контроль над ВСЕМИ элементами. Полного разделения не происходит. Понимаете? Во всех СMS-ках именно такой подход. Это очень нетривиальна проблема как оказалось |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Нет. Я вам изложил суть того, как надо делать. А будете ли вы сами пармер писать или смарти использовать - это совсем другое дело. Вот на этом форуме куски html вкинуты в функции, в функциях нет никакого программного кода, кроме вставки нужных параметров с троку heredoc... Все зависит от того, как вы шаблонизатор построите. Хотите впишите <link ....> в tpl файл, хотите в коде PHP эту строчку пишите, это никакой разницы нет. |
|||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Блин, я чувствую вы мен не понимаете...
Каким бы образом мы не подключили стили они не будут работать, пока мы не пропишем после тега class="" или id= и проч.!!! С этим вы согласны? Так. Хорошо. Теги формируются в методах класса. Единственный способ подставить туда значения этих class и идентификаторов - это передать их как параметры конструктору или там другим функциям. Cогласны? Вы сейчас можете сказать: Давайте у каждого тега пропишем класс сразу же с определенным именем. Но потом верстальщику надо будет называть эти классы именно так что-ли? Единственный ему выход это лезть в php-код и вводить в параметры функции названи этих классов, что он делать не должен по определению(). Ну, теперь поняли? |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Вы заранее определяете для каждого элемента название стиля, которое прописываете в class или id, а дизайнер потом, на основе этого создает .css, где эти имена классов и ID стилей определяет. И лезть в код ему не надо, достаточно глянуть в сырцы html страницы полученной от скрипта.
|
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
qsajeal, посмотрите как это реализовано в Zend Framework, это достаточно интересно. Zend_Form_Decorator_ViewScript
Т.е. это как 1ый метод, но задаете вы не стиль, а декоратор. А сами декораторы любого элемента уже сможет сверстать верстальщик, пользуясь только шаблоном. |
|||
|
||||
qsajeal |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
2 недостатка: 1. Код захломлен ненужными элементами 2. Дизайнер ограничен в названии стилей. Ему нужно называть их именно так, как вы указали Добавлено через 1 минуту и 38 секунд
Я только новичек и с php знаком 2 месяца, пока дальше PEAR не продвинулся. Но вскоре обязательно изучу ZF. Cпасибо за совет Добавлено через 8 минут и 49 секунд Ага. Глянул ссылку. Разобрался. Очень интересный подход. |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Простите, но это бред... В коде ничего лишнего не бывает, либо задача не оптимизирована.
А какая дизаййнеру разница? Поймите, у вас не получится полснотью на 100% разделить в сложном скрипте дизайн и код. Даже в IPB все равно небольшая часть идет в коде. Никуда вы от этого не денетесь. |
|||
|
||||
Anarki |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: 1 Всего: 11 |
IPB не эталон.
Это сообщение отредактировал(а) Anarki - 12.8.2008, 09:45 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
отвечу на первоначальный вопрос.
"разделение логики и содержимого" - это миф. в реальности над шаблоном всегда работают программист и верстальщик только вместе. Это, в первую очередь, касается т.н. "шаблонов без логики", в которых верстальщик без программера вообще шагу не может ступить, но и смартиподобных - тоже. Договариваться все равно придется. И договориться об именах классов - совсем несложно. А смарти тут получается не при делах. просто делается вывод переменной, содержащей форму. И это нормально. Я раньше был противником "формовочных автоматов", и делал форму такой же частью шаблона, как и другие. Борясь с естественным для каждого программиста желанием унифицировать вывод всех этих однообразных данных. Но потом подумал, что все оформление действительно можно задавать только стилем. а стиль указывать в параметрах вызова класса. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |