Мониторинг и администрирование серверов
framework.zend.com
Stable релиз 2.0 / 1.12

Автоматическая генерация CRUD интерфейса (Scaffolding) с помощью Zend_Controller_Scaffolding

Хочу представить компонент ZF, которого не хватало всем, кто сталкивался с необходимостью быстро поднять простой интерфейс для управления записями БД.

Подобное уже есть в ряде других PHP фреймворков (Symfony, CakePHP). Мною написано предложение (proposal) на официальном вики ZF, подробно описывающее суть компонента, а также включающее ссылку на рабочий код (Google Code), использованный уже в двух проектах:

http://framework.zend.com/wiki/display/ZFPROP/Zend_Controller_Scaffolding+-+Alex+Oroshchuk

Предлагаю всем заинтересованным разработчикам по возможности проверить в деле и прокомментировать данную инициативу. Заранее благодарю!

Лучший способ следить за обновлениями сайта это подписаться на RSS
Если информация была полезной для вас, вы можете поддержать сайт.
Комментарии:
Алекс 02.09.2010 14:35 #
Чем не устраивает доктрин?
Ответить
Александр 02.09.2010 15:15 #
Doctrine - это не всегда нужная зависимость от довольно мощного, и, как следствие, тяжелого, компонента. Ядра ZF вполне хватает для реализации поставленной задачи. Doctrine же, насколько я знаю, умеет только генерировать CRUD формы, а как обстоит дело с прочим функционалом? В любом случае, каждый выбирает решение, более подходящее для конкретной ситуации :)
Ответить
Алекс 02.09.2010 19:55 #
В общем да, нужно продвигать.
Ответить
KirillVlasov 08.09.2010 06:27 #
Юзать доктрин из-за crud?
Ответить
Михаил 03.09.2010 06:12 #
Я всегда думал, что скаффолдинг -- это генерация круда с последующей возможностью его изменения и приведение к нужному тебе виду, а динамическая генерация на лету.
Ответить
Владимир 13.09.2010 15:24 #
Наконец появился легкий и удобный скаффолдинг, спасибо!
Ответить
Владимир 19.09.2010 21:34 #
Было бы очень неплохо добавить поддержку других бд кроме MySQL, все что здесь нужно - просто добавить обозначения типов данных. В текущей версии не поддерживается SQLite, хотя все что нужно было чтобы скаффолдинг правильно работал для большей части типов данных - привести возвращаемые зендом значения к нижнему регистру
Ответить
Александр 21.09.2010 00:17 #
Я протестирую работу с БД кроме MySQL и исправлю эту проблему, если она действительно имеет место...
Ответить
Двинутый разработчик 26.09.2010 21:43 #
Ответить
Александр 30.09.2010 14:10 #
Знаю, правда не пользовался. Главная причина в этом - отсутствие поддержки связей между сущностями БД, а также необходимость изучать нечто более сложное, чем хотелось бы иметь.

Насчет косяков, упомянутых Владимиром, не в курсе но буквально недавно выложил в SVN юнит-тесты для своего модуля, покрытие кода можете оценить сами...
Ответить
Владимир 27.09.2010 12:59 #
Двинутый разработчик
А вы пробовали его использовать, видели его внутри?
Куча косяков и недоделок, которые неизвестно когда будут править. Хотя и возможностей гораздо больше конечно
Ответить
naydav 11.11.2010 13:00 #
А не лучше, бы было, это реализовать, как помощник действий...
Ответить
Андрей 11.12.2010 23:53 #
Scaffolding замечательно работает. Спасибо за проделанную работу. Конечно не мешало б добавить в опции параметры для задания текста сообщений и названий кнопок для разных языков, чтоб тексты не приходилось каждый раз править в самом классе. Еще раз Большое Спасибо
Ответить
Александр 24.12.2010 23:36 #
Рад стараться :)
Кстати, кнопки можно переопределить через prepareEditForm,
изменив элемент формы. А вообще принимаются любые патчи, меняющие код в положительную сторону, а также баги и фичи, которые можно задокументировать вот здесь:
http://code.google.com/p/zendscaffolding/
Ответить
Егор 29.12.2010 18:20 #
Интересно посмотреть примеры с использованием listModifier, saveModifier и loadModifier, или хоть одной из них, в примере их нет, и у меня они почему то не работают. Заранее благодарю автора.
Ответить
Иван 03.05.2011 09:03 #
Спасибо огромное!!! Замечательная вещь, очень выручила!
Всё работает на \"ура\", особенно порадовало, что с ForeignKeys всё красиво обрабатывается. А с таким гибким конфигурированием вообще всё просто чудесно!

Егор, Про модификаторы - всё работает:
\'listModifier\' =>\'long2ip\'
\'saveModifier\' => \'ip2long\'
или
\'saveModifier\' =>\'Any_Class::anyFunction\'

Из пожеланий и мелких \"красивостей\" - было бы здорово выводить соответствующее предупреждение вместо ссылки \"Create new entity\", если для данной  дочерней таблицы (с обязательным указанием значения FK) пока ещё нет родительских записей.
Ответить
Иван 06.05.2011 19:24 #
Сорри, беру слова обратно.
В load-модификаторе перед call_user_func
стоит if (function_exist...
Эту проверку я просто убрал, чтобы заработало.
Могу лишь предположить, эта функция не для нас, привыкших к автолоадингу,
и проверяет только в текущем и подключенных файлах...
Ответить
Антон 19.10.2011 10:53 #
Поставил, посмотрел. С виду симпатично. Сейчас использую нечто похожее, написанное пару лет назад.
Вопрос к автору: зачем вы используете setViewScriptPathSpec, который мешает выводу Views например при использовании view-хелпера action()?
Почему бы не использовать метод хелпера ViewRenderer->renderScript() в 4 реализуемых вами action'ах?
Помимо CRUD иногда необходимо использовать дополнительные action'ы, виды которых будут лежать в стандартной папке по имени контроллера.
Ответить
Комментарии временно отключены, вы можете воспользоваться форумом.