Как отключить модули через интерфейс администратора или через Drush?
10
В Drupal 7 можно было отключить модули через интерфейс администратора или через Drush drush pm-disable. В Drupal 8 флажки выделены серым цветом в интерфейсе администратора, и Drush не может отключить их через pm-disable? Как отключить модули в Drupal 8 с помощью Drush или через интерфейс администратора? Или мне нужна консоль Drupal для таких задач?
(Извините за путаницу, вызванную ошибочным использованием слова «программно», оно означало «через командную строку»)
Как интерфейс администратора в Drupal 8 государств в области сообщений, парадигмы и концепции , как получить установленные модули и инвалидов был изменен в Drupal 8, так как там было много проблем , участвующих в пути , как это было раньше, из - за базы данных осталось за кадром и несоответствия данных при отключении и включении модулей и т. д.
Поэтому пользователям рекомендуется скорее удалять модули, чем отключать их сейчас в D8. Это не означает, что модули удалены или удалены из корня Drupal, но они полностью удалены из базы данных, включая их конфигурацию.
Попробуйте drush pm-uninstall module-nameвместо этого, и вы увидите желаемый эффект, который вам нужен.
Флажки неактивны, чтобы по-прежнему можно было включать и устанавливать неактивные модули способом, известным из D7. Но вы больше не можете их отключить. И удаление не должно быть обеспечено флажками, так как это будет опасно.
Посмотрите дважды в интерфейсе администратора: вы также найдете новую вкладку для удаления модулей.
Как это сделать программно в php (например, в MODULE.install)
Гийом Буа
Ответ ниже расскажет вам, как программно удалить модули, без отключения в Drupal 8.
Duncanmoo
Это следует задать в другом вопросе. Ответ ниже не имеет никакого отношения к теме вопроса на этом сайте.
JBetdrop
@jbitdrop - Это было до тех пор, пока вы не изменили название.
leymannx
3
Поскольку вопрос задается программно, и поэтому я пришел сюда в первую очередь, я добавлю рабочий фрагмент кода, который будет помещен внутри MYMODULE.install:
/**
* Uninstall Field UI.
*/function MYMODULE_update_8001(&$sandbox){
\Drupal::service('module_installer')->uninstall(['field_ui']);}
Это следует задать в другом вопросе. Ответ не имеет никакого отношения к теме вопроса на этом сайте.
jbitdrop
1
@jbitdrop - После того, как вы изменили название вопроса, оно больше не подходит, да. В вашем посте вы все еще спрашиваете, как отключить модули программно.
Leymannx
Вы правы, но все было наоборот. Прочитав ваш ответ, я понял, что мой вопрос может быть неправильно понят (извините, но не на родном языке). Вот почему я изменил название, чтобы сделать его более понятным. Но, как вы можете видеть из моего объяснения в D7, я следовал команде Drush и тому подобному, а не тому, как подготовить модуль для процедур удаления. Я прошу прощения за то, что вызвал замешательство. Может быть, я должен задать подходящий вопрос где-то еще раз и переместить ваш ответ туда :) (PS: Если программно это неправильное слово, я должен заменить его в посте тоже)
Поскольку вопрос задается программно, и поэтому я пришел сюда в первую очередь, я добавлю рабочий фрагмент кода, который будет помещен внутри
MYMODULE.install
:источник