Расширение форм Plesk
Plesk SDK API позволяет расширять формы Plesk, добавляя в них собственное содержимое. Соответствующий хук позволяет добавлять элементы управления из расширения в любую форму Plesk, например:
- Секция развертывания Git на странице создания домена.
- Приложения Ruby / Python на странице создания домена.
- Ссылка на учетные записи в социальных сетях в профиле.
- Двухфакторная авторизация в профиле.
Этот хук разработан для добавления подформ из всех расширений во время визуализации формы. Можно использовать экземпляры pm_Form_SubForm, но это необязательно.
Примечание: Поддерживаются только формы Zend (те, у которых URL-адрес начинается с /smb/
и /admin/
).
Жизненный цикл каждой формы Plesk состоит из 3 этапов:
- init: добавление элементов с первоначальными значениями.
- isValid: проверка валидаторов для каждого элемента, перезаписанный метод может предотвратить или расширить валидацию.
- process: выполнение действий, сохранение новых значений и так далее.
Каждый этап инициирует выполнение соответствующего метода в подформе. Чтобы определить, какая форма будет обрабатываться хуком, в хуке передаются следующие аргументы: $controller, $action и $formId.
Примеры
Хук должен быть создан в plib/hooks/Form.php
class Modules_Git_Form extends pm_Hook_Form
{
public function getSubForms($controller, $action, $formId)
{
if (in_array($formId, [static::FORM_CREATE_SUBSCRIPTION, static::FORM_CREATE_CUSTOMER])) {
$subForm = new AddWithDomain(['context' => [
'isSubscriptionCreation' => true,
], 'moveBefore' => 'subscription-subscriptionInfo']);
} elseif (in_array($formId, [static::FORM_CREATE_DOMAIN, static::FORM_CREATE_SUBDOMAIN])) {
$subForm = new AddWithDomain(['context' => [
'isDomain' => static::FORM_CREATE_DOMAIN === $formId,
'isSubscriptionCreation' => false,
], 'moveAfter' => 'hostingSettings']);
} else {
return [];
}
return ['git' => $subForm];
}
}