Некоторые модули или решения добавляют нестандартные поля для сущностей, такие поля некорректно отображаются при редактировании сущностей в центре администрирования. Нестандартные поля можно скрыть, либо добавить им подписи, чтобы администратору было ясно их предназначение.
Для этих целей можно воспользоваться нижеприведенным наблюдателем.
/modules/admin/form/action/controller/type/edit/observer/hidecustomfields.php
со следующим содержимым: <?php defined('HOSTCMS') || exit('HostCMS: access denied.'); /** * Наблюдатель для скрытия/добавления подписи для поля. * * В bootstrap.php: * * // Kad: Наблюдатели для скрытия/добавления подписи для поля. * Core_Event::attach('Admin_Form_Action_Controller_Type_Edit.onBeforePrepareForm', * array('Admin_Form_Action_Controller_Type_Edit_Observer_HideCustomFields', 'onBeforePrepareForm')); * // Core_Event::attach('Admin_Form_Action_Controller_Type_Edit.onBeforeExecute', * // array('Admin_Form_Action_Controller_Type_Edit_Observer_HideCustomFields', 'onBeforeExecute')); */ class Admin_Form_Action_Controller_Type_Edit_Observer_HideCustomFields { /** * Метод для скрытия поля. * * @param Admin_Form_Action_Controller_Type_Edit $oAdminFormActionControllerTypeEdit * @param array $aArgs * @return void */ static public function onBeforePrepareForm(Admin_Form_Action_Controller_Type_Edit $oAdminFormActionControllerTypeEdit, array $aArgs) { list($oObject, $oAdminFormController) = $aArgs; switch (get_class($oAdminFormActionControllerTypeEdit)) { case 'Shop_Order_Controller_Edit': case 'Siteuser_Controller_Edit': $oAdminFormActionControllerTypeEdit->addSkipColumn('custom_field'); break; } } /** * Метод для добаления полю подписи. * * @param Admin_Form_Action_Controller_Type_Edit $oAdminFormActionControllerTypeEdit * @param array $aArgs * @return void */ static public function onBeforeExecute(Admin_Form_Action_Controller_Type_Edit $oAdminFormActionControllerTypeEdit, array $aArgs) { list($operation, $oAdminFormController) = $aArgs; switch (get_class($oAdminFormActionControllerTypeEdit)) { case 'Shop_Order_Controller_Edit': case 'Siteuser_Controller_Edit': if (array_key_exists('custom_field', $oAdminFormActionControllerTypeEdit->getFields())) { $oAdminFormActionControllerTypeEdit->getField('custom_field') ->caption('Подпись для поля'); } break; } } }
Core_Event::attach('Admin_Form_Action_Controller_Type_Edit.onBeforePrepareForm', array('Admin_Form_Action_Controller_Type_Edit_Observer_HideCustomFields', 'onBeforePrepareForm')); Core_Event::attach('Admin_Form_Action_Controller_Type_Edit.onBeforeExecute', array('Admin_Form_Action_Controller_Type_Edit_Observer_HideCustomFields', 'onBeforeExecute'));
* Метод onBeforePrepareForm отвечает за скрытие поля, можно перечислить контроллеры сущностей, для которых необходимо скрывать поля, и собственно поля. Метод onBeforeExecute отвечает за добавление полю подписи, в нем также можно перечислить контроллеры сущностей, для которых необходимо скрывать поля, и собственно поля и надписи для них.
Страницу создал Максим Засорин 31.03.17 в 15:36