Как я расширяю внесенный модуль в Drupal?

Я думаю там, что действительно ли вероятным является совсем другой набор причин между тем, почему люди "ненавидят" на ActiveRecord и что является "неправильным" с ним.

По проблеме ненависти, существует много яда к чему-либо связанные направляющие. До что не так с ним, вероятно, что это похоже на всю технологию и существуют ситуации, где это - хороший выбор и ситуации, где существует лучший выбор. Ситуация, где Вы не добираетесь для использования в своих интересах большинства функций направляющих ActiveRecord, по моему опыту, состоит в том, где база данных плохо структурирована. Если Вы получаете доступ к данным без первичных ключей с вещами, которые нарушают первую нормальную форму, где существует много хранимых процедур, требуемых получить доступ к данным, Вы - более обеспеченное использование чего-то, что является больше просто оберткой SQL. Если Ваша база данных относительно хорошо структурирована, ActiveRecord позволяет Вам использовать в своих интересах это.

Для добавления к теме ответа комментаторам, которые говорят, вещи тверды в ActiveRecord с возражением фрагмента кода

, @Sam McAfee Заявляет, что Вы имеете Пользовательский класс в своем домене и должны иметь ссылки на, или наборы других объектов, уже загруженных при получении того Пользовательского объекта. Данные могут прибывать из многих различных таблиц, и шаблон ActiveRecord может сделать их действительно трудно.

user = User.find(id, :include => ["posts", "comments"])
first_post = user.posts.first
first_comment = user.comments.first

При помощи включать опции, ActiveRecord позволяет Вам переопределить лениво загружающееся поведение по умолчанию.

6
задан kiamlaluno 21 February 2011 в 23:23
поделиться

3 ответа

По возможности избегайте взлома или разветвления модуля. Взлом модуля дает вам меньшее количество проблем, связанных с «взломом ядра», а разветвление модуля (без явно превосходной архитектуры и набора функций) просто запутывает воду модуля, что еще больше затрудняет принятие эффективных решений разработчиками сайтов. о том, что использовать.

Лучшие решения:

  1. Используйте любой API, предоставляемый модулем. Иногда есть функции, которые вы можете использовать в качестве вызовов API, которые не обязательно предназначены для этого.
  2. Создайте дополнительные функции и отправьте исправление в очередь задач модуля, чтобы другие могли извлечь выгоду из вашей работы, а вы можете получить выгоду от безопасности аудит без особого труда.
  3. Не всегда, но часто вы можете далеко зайти, создав собственный модуль, который реализует hook_form_alter и добавляет обработчик отправки, который ведет обратно к вашему модулю для обработки.
7
ответ дан 8 December 2019 в 14:44
поделиться

Что это за модуль? Некоторые модули предоставляют API-интерфейсы, которые можно расширить, написав собственный модуль. Существует тонны модулей, которые «расширяют» представления, основанные на API представлений . Если модуль, который вы хотите расширить, не имеет хорошего API, вы всегда можете выполнить его форк, чтобы создать версию, соответствующую вашим потребностям. Может быть, это поможет и кому-то другому.

2
ответ дан 8 December 2019 в 14:44
поделиться

Чтобы изменить форму, отображаемую модулем, вы можете просто создать модуль, который реализует hook_form_alter () или hook_form_FORM_ID_alter () . В большинстве случаев, когда вы хотите изменить поведение модуля, вам также необходимо изменить форму настроек, которую он использует (или любую другую форму, которую он использует, если это так).

0
ответ дан 8 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: