ФорумПрограммированиеPHP для идиотов → Компоненты, реализация пользовательского интерфейса

Компоненты, реализация пользовательского интерфейса

  • shuranov

    Сообщения: 113 Репутация: N Группа: Кто попало

    Spritz 7 августа 2010 г. 15:06

    День добрый всему сообществу, хотелось бы вынести на обсуждение один вопрос, который не нашел сразу поиском (вероятно плохо искал, ткните в нужное место ссылкой, если я лопухнулся). Собственно суть. Если небольшая система, в которую устанавливаются компоненты, каждый компонент реализует определенные действия, в частности компонент авторизации позволяет авторизоваться, войти, выйти и восстановить пароль в системе. Доступен этот компонент по своему URL. Но, нужно на нескольких страницах отображать форму быстрой авторизации. Как логичнее это сделать с сохранением инкапсуляции доступа к компонентам?
    У меня мысль пошла классически, компонент должен предоставлять реализацию стандартного интерфейса, определяя поставляемые блоки и их размеры. Таким образом администратор может указать на странице место, куда будет вставлен нужный блок на нужной странице, без знаний программирования. Но меня уверяют, что это говнокодерский подход и нужно по-другому. Как по-другому пока не сказали, вот и спрашиваю совета, может быть я мыслю старыми категориями и следует что-то почитать?
  • Padaboo

    Сообщения: 477 Репутация: N Группа: Адекваты

    Spritz 7 августа 2010 г. 15:47, спустя 40 минут 40 секунд

    т.е. вы хотите запихать что то типа {AUTH} в шаблон, а туда будет подгружаться блок вместе с html кодом?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 августа 2010 г. 15:47, спустя 27 секунд

    виджеты/блоки, которые в шаблон встраиваются и запускаются.
  • Padaboo

    Сообщения: 477 Репутация: N Группа: Адекваты

    Spritz 7 августа 2010 г. 15:53, спустя 5 минут 56 секунд

    shuranov, где вас уверяют, что говнокод?ссылку можно?
  • shuranov

    Сообщения: 113 Репутация: N Группа: Кто попало

    Spritz 7 августа 2010 г. 15:56, спустя 2 минуты 35 секунд

    По идее хочу, чтобы выглядело так: инсталляция компонента прописывает его обработчики в БД, для роутинга, также прописываются блоки, которые может предлагать этот компонент. В частности для компонента регистрации это форма быстрого входа. Прописана она может быть в БД как путь к шаблону. Если говорить Smarty, то выглядеть это будет приблизительно так:

    <div id="provided-block">
    {foreach item=item from=$aProvidedBlocks}
    {include file=$item}
    {/foreach}
    </div>

    provided-block может быть несколько разных на странице. Вместе с aProvidedBlocks для блоков передается необходимая информация (об этом бесокоится компонент, вернее реализация функции интерфейса получения блока).
    Сумбурно рассказал? Или надо предполагаемую схему БД привести?
    Спустя 71 сек.

    shuranov, где вас уверяют, что говнокод?ссылку можно?

    На логи аськи пока веб не предоставляет ссылок :) Не совсем говнокод сказано, но довольно топорным подходом назван принцип. Вот и решил посоветоваться все-же, ибо PHP не основной мой язык, мое предпочтение это Perl.
  • shuranov

    Сообщения: 113 Репутация: N Группа: Кто попало

    Spritz 7 августа 2010 г. 16:17, спустя 21 минуту 38 секунд

    Возможно, я не все точно описал и проблема освещена не со всех сторон. Опишу более развернуто. Итак, для администратора предполагается конструктор страниц, базирующийся на предопределенных шаблонах, например: хедер, футер, три колонки. Для создаваемой страницы он может выбрать один из таких вот шаблонов (безусловно, добавить шаблоны в папки и информацию о них в БД можно), каждый такой шаблон предоставляет информацию о своих размерах (хедер такой-то высоты, либо резиновой высоты. Футер такой-то, колонки такой-то). Затем администратору предполагается предоставить возможность добавления блоков, провайдером которых являются компоненты, установленные в системе. Вот администратор и указывает, что в хедер устанавливаем форму авторизации, в футер контактную информацию, в левый блок меню1, в правый блок меню2, в базовый блок - новости и последние темы форума. При загрузке страницы проходит всего один несложный запрос, который выгребает список компонент, сгруппированный по блокам и регистрирует адреса этих блоков, а также необходимую информацию для блоков, в шаблонизаторе, по принципу, который я приблизительно указал выше.
    Теперь когда описал детально, насколько негибкий подход получился?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 августа 2010 г. 16:20, спустя 3 минуты 3 секунды

    да нормально все
  • shuranov

    Сообщения: 113 Репутация: N Группа: Кто попало

    Spritz 7 августа 2010 г. 16:30, спустя 9 минут 53 секунды

    Ок, спасибо за ответ. Тогда буду дальше проектировать систему, позже отпишусь в другой теме, касающейся прав доступа, которую видел в другом разделе. Мне свойственно порой сомневаться (:
  • Padaboo

    Сообщения: 477 Репутация: N Группа: Адекваты

    Spritz 7 августа 2010 г. 16:33, спустя 2 минуты 56 секунд

    мне вот только интересно как не программист уберет или передвинет компонент, если они у вас выводятся кучей в одно место
  • shuranov

    Сообщения: 113 Репутация: N Группа: Кто попало

    Spritz 7 августа 2010 г. 16:35, спустя 1 минуту 36 секунд


    мне вот только интересно как не программист уберет или передвинет компонент, если они у вас выводятся кучей в одно место

    Порядок вывода компонент в блоке определяется полем SortOrder. Удаление тоже предоставляется админкой, реализовать удаление и перемещение компонент в блоках не сложно, важно не скатиться изначально в глупость (:
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 августа 2010 г. 16:37, спустя 2 минуты 37 секунд

    сдаюс :)
  • shuranov

    Сообщения: 113 Репутация: N Группа: Кто попало

    Spritz 7 августа 2010 г. 16:38, спустя 1 минуту 1 секунду


    сдаюс :)

    Вот этот человек, с большими усами, меня говнокодером утром и обозвал.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 августа 2010 г. 16:41, спустя 2 минуты 15 секунд

    :D
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 августа 2010 г. 16:53, спустя 12 минут 46 секунд

    в шаблоне

    <div id="products">
    {% widget 'catalog/products' ['category_id' : 10, 'order_by' : 'title', 'limit' : 15] %}
    </div>
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 августа 2010 г. 21:02, спустя 4 часа 8 минут 7 секунд

    SpartakuS, ну ты и гад!
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!