Comments 16
Есть такой язык Python, а на нём волшебный фреймворк Django.
Поговаривают, что административный интерфейс этот фреймворк собирает на лету, опираясь на структуру конкретной модели (объектная прослойка над объектной прослойкой таблицы в БД).
Он конечно не один такой красивый, я просто пример привёл...
Поговаривают, что административный интерфейс этот фреймворк собирает на лету, опираясь на структуру конкретной модели (объектная прослойка над объектной прослойкой таблицы в БД).
Он конечно не один такой красивый, я просто пример привёл...
0
ZendFramework, в частности, Zend_Db_Table и Zend_Db_Table_Row, позволяют сделать дефолтные функции (редактирование, удаление, просмотр, сортировка) в одну строчку.
Очень рекомендую применительно именно к пхп.
Очень рекомендую применительно именно к пхп.
+1
Расскажу в общих чертах, как делаем подобное на Django + Google Web Toolkit.
Упомянутая выше автоматическая админка Django, конечно, хороша, но для всех её можно заточить, ну и AJAX-овых красивостей хочется.
На сервере Django диктует архитектуру MVC (или MVT, где T = template, как её называют сами джангисты), к подобному стремимся и на клиенте. Модель сервера оборачивается на стороне GWT интерфейсом (набор getters/setters и, возможно, несколько служебных методов, delete и т.п.). Реализация этого интерфейса спрятана в недра другого класса, который и отвечает за взаимодействие с сервером (данные ходят в формате JSON), и представляет собой «коллекцию» объектов-записей. Коллекция observable, т.е. можно подписаться на события добавления, удаления и т.д. Аналогично, для объекта-записи можно подписаться на события изменения свойства. Таким образом реализуется привязка к интерфейсу. Это может быть простая таблица, это может быть специальный виджет для редактирования такого вида записей — на что фантазии хватит, благо в GWT можно нормально собирать интерфейс из «кирпичиков». Если всё это реализовывать вручную, получается изрядно многословно (ну Java же), но вполне расширяемо. Что приятно, в этой модели есть много мест для автоматизации:
— генерация Java-интерфейсов по моделям;
— data-binding к элементам управления в GWT-интерфейсе;
— генерация REST API для CRUD-операций с моделями.
Не всё из этого пока реализовано, но есть желание собрать в общеполезный набор утилит/библиотеку для связки Django с GWT. К сожалению, пока есть более приоритетные задачи.
Упомянутая выше автоматическая админка Django, конечно, хороша, но для всех её можно заточить, ну и AJAX-овых красивостей хочется.
На сервере Django диктует архитектуру MVC (или MVT, где T = template, как её называют сами джангисты), к подобному стремимся и на клиенте. Модель сервера оборачивается на стороне GWT интерфейсом (набор getters/setters и, возможно, несколько служебных методов, delete и т.п.). Реализация этого интерфейса спрятана в недра другого класса, который и отвечает за взаимодействие с сервером (данные ходят в формате JSON), и представляет собой «коллекцию» объектов-записей. Коллекция observable, т.е. можно подписаться на события добавления, удаления и т.д. Аналогично, для объекта-записи можно подписаться на события изменения свойства. Таким образом реализуется привязка к интерфейсу. Это может быть простая таблица, это может быть специальный виджет для редактирования такого вида записей — на что фантазии хватит, благо в GWT можно нормально собирать интерфейс из «кирпичиков». Если всё это реализовывать вручную, получается изрядно многословно (ну Java же), но вполне расширяемо. Что приятно, в этой модели есть много мест для автоматизации:
— генерация Java-интерфейсов по моделям;
— data-binding к элементам управления в GWT-интерфейсе;
— генерация REST API для CRUD-операций с моделями.
Не всё из этого пока реализовано, но есть желание собрать в общеполезный набор утилит/библиотеку для связки Django с GWT. К сожалению, пока есть более приоритетные задачи.
+2
UFO just landed and posted this here
момете кинуть парочку толкових статтей об Zend Framework... убедить меня перелезть из CakePHP на него...
0
а чем вас в этом случае CakePHP не устраивает? bake.php умеет "печь" все дефолтные функции(запись, редактирование, удаление, просмотр). Причем он "печет" две версии каждой функции: для обычных пользователей и для администраторов/редакторов.
0
Про Zend Framework пока ничего не могу сказать - скоро начну его изучать. Пока представление очень поверхностное.
Обычно решаю эти задачи с помощью Django. В нем есть очень удобная админка, которую ...совершенно не надо делать - она получается сразу готовая и удобная в работе.
Тут есть видео-пример на 7 минут (правда на английском) - http://www.throwingbeans.org/video/djang…
Создание приложения, работающего с БД.
Одновременно "в подарок" создается редактор для таблиц. При этом учитывается валидация, ограничения, отношения один-ко-многим, много-ко-многим и прочие моменты.
Что мне очень нравится в Django - полный контроль над таблицами и отсутствие мусора в БД. Я имею ввиду наличие каких-то левых таблиц, идиотских связок и прочего бреда. Структура получается прямо "академическая" :) - соответственно ее очень просто использовать в другом приложении.
У меня один проект так сделан: общие таблицы, с которыми работает мое приложение для обработки данных и админка на Django. Очень быстро и удобно.
Обычно решаю эти задачи с помощью Django. В нем есть очень удобная админка, которую ...совершенно не надо делать - она получается сразу готовая и удобная в работе.
Тут есть видео-пример на 7 минут (правда на английском) - http://www.throwingbeans.org/video/djang…
Создание приложения, работающего с БД.
Одновременно "в подарок" создается редактор для таблиц. При этом учитывается валидация, ограничения, отношения один-ко-многим, много-ко-многим и прочие моменты.
Что мне очень нравится в Django - полный контроль над таблицами и отсутствие мусора в БД. Я имею ввиду наличие каких-то левых таблиц, идиотских связок и прочего бреда. Структура получается прямо "академическая" :) - соответственно ее очень просто использовать в другом приложении.
У меня один проект так сделан: общие таблицы, с которыми работает мое приложение для обработки данных и админка на Django. Очень быстро и удобно.
0
если Вы о GUIшных таблицах, то много javascript библиотек представляют так называемый "editable data grid". особенно преуспел в этом ExtJs, но и под mootools, к примеру, я видел пару замечательных плагинов. думаю стоит просто поискать в гугле
если же таблицы баз данных и под манипуляции с РНР, то тут как было выше замечено ZF будет в помощь, ну или моя менее тяжелая и довольно шутрая реализация: http://blog.azazel.org.ua/bazovaya-obrabotka-bd/
правда сейчас переписываю на полностью объектную модель
если же таблицы баз данных и под манипуляции с РНР, то тут как было выше замечено ZF будет в помощь, ну или моя менее тяжелая и довольно шутрая реализация: http://blog.azazel.org.ua/bazovaya-obrabotka-bd/
правда сейчас переписываю на полностью объектную модель
+1
Я делал web приложение такого типа. Правда в нем редактируется не таблица, а список (та же таблица только с одним столбцом).
Использовал prototype + scriptaculous на клиентской стороне и php - на серверной.
В общем, получился одностраничный редактор. При щелчке по записи вместо нее появляется небольшая форма с текстовым полем и кнопками "Сохранить" и "Отмена". Используется компонент in-place text editor.
Если интересно, посмотреть этот пример можно здесь: http://www.demosites.org.ua/weblistedito…
А прочитать подробное описание - в статье Как сделать редактор списка в стиле Web 2.0
Использовал prototype + scriptaculous на клиентской стороне и php - на серверной.
В общем, получился одностраничный редактор. При щелчке по записи вместо нее появляется небольшая форма с текстовым полем и кнопками "Сохранить" и "Отмена". Используется компонент in-place text editor.
Если интересно, посмотреть этот пример можно здесь: http://www.demosites.org.ua/weblistedito…
А прочитать подробное описание - в статье Как сделать редактор списка в стиле Web 2.0
+1
Действительно, удобнее всего использовать т. зв. in-place editor, который работает по довольно-таки нехитрому (кликнул на значение некоторого поля, сиё значение немедленно превращаетсья в , нововведенное значение которого опосля нажатия Enter благополучно заменяет текущее в базе) и простому в реализации (большинство популярных js-бибиотек предоставляют вполне удобный функционал подобного рода) принципу.
Очень часто использую jQuery+php для таких задач, хотя функиционал и удобность использования ExtJS намного выше. Имеет смысл его использовать только вместе с как минимум половиной мощи сего фреймворка.
Очень часто использую jQuery+php для таких задач, хотя функиционал и удобность использования ExtJS намного выше. Имеет смысл его использовать только вместе с как минимум половиной мощи сего фреймворка.
0
Советую посмотреть как это реализовано в Symfony. Вот здесь видео: http://www.symfony-project.org/screencast/admin-generator
0
Sign up to leave a comment.
Редактирование таблицы