Traits

CoreEventAware

返回最适合 Joomla 核心事件名称的事件类

ReshapeArgumentsAware

用于重塑参数,保持与旧版插件事件的向后兼容性的 Trait。

旧的插件事件处理程序期望位置参数,而不是命名参数,因为它们是简单的 PHP 方法,例如 public onExample($foo, $bar, $baz)。但是,具体的 Event 类使用命名参数,这些参数可以以任何顺序传递。以下两个示例是等效的:$event1 = new ConcreteEventClass('onExample', ['foo' => 1, 'bar' => 2, 'baz' => 3]; $event2 = new ConcreteEventClass('onExample', ['bar' => 2, 'baz' => 3, 'foo' => 1,]; 但是,这意味着事件对象的内部 $arguments 属性在每种情况下都以**不同**的顺序保存命名参数。当事件处理程序知道 ConcreteEventClass 时,它可以检索命名参数,一切都会很好。但是,当您通过 CMSPlugin::registerLegacyListener 注册旧版插件侦听器时,您会遇到一个大问题!旧版侦听器按位置传递参数,按照它们添加到 Event 对象中的顺序。在前面的示例中,$event1 会按预期工作,因为 foo、bar 和 baz 参数的顺序与旧版侦听器期望的相同。另一方面,$event2 会彻底失败,因为调用顺序将是 $bar、$baz、$foo,这**不是**旧版侦听器期望的。解决此问题的唯一方法是在具体事件的构造函数中“重塑参数”,以便保证参数的顺序与旧版侦听器期望的相同。此外,由于 Joomla 将所有参数(除了“result”参数)盲目地传递给旧版侦听器,因此我们必须确保 a. 设置所有必要的参数,以及 b. 任何其他命名参数**不存在**。否则,我们的旧版侦听器将接收错误数量的位置参数并中断。此 trait 中的 reshapeArguments() 方法实现了所有这些功能,此方法必须在具体事件类的构造函数中调用。此 trait 被标记为已弃用,并将在 6.0 中删除,因为在 Joomla 6 中,我们只会使用具有命名参数的具体事件类,删除旧版侦听器及其位置参数的麻烦。

AbstractEvent

此类实现系统范围内使用的基本 Event 对象以提供正交性。模型、控制器等核心对象会动态创建此类事件,并通过应用程序的调度程序(俗称“Joomla!插件系统”)分派它们。这样,合适的插件(通常是“系统”插件)就可以修改任何内部类的行为,提供系统范围的服务,例如标签、内容版本控制、评论,甚至低级服务,例如创建/修改/锁定行为的实现、记录点击次数等。

您可以使用以下代码创建新的事件:$event = AbstractEvent::create('onModelBeforeSomething', $myModel, $arguments); 您可以使用 $event['subject'] 从事件侦听器访问主题对象。由您的侦听器确定是否应针对主题应用其功能。此 AbstractEvent 类实现了一个可变事件,该事件允许在运行时更改其参数。这通常是不建议的。最好使用 AbstractImmutableEvent 并在所有交互中限制主题类。

AbstractImmutableEvent

此类实现系统范围内使用的不可变基本 Event 对象以提供正交性。

AfterExtensionBootEvent

表示扩展的 `onBeforeExtensionBoot` 事件的事件类

BeforeExtensionBootEvent

表示扩展的 `onBeforeExtensionBoot` 事件的事件类

ErrorEvent

表示应用程序的 `onError` 事件的事件类

GenericEvent

此类提供了 AbstractEvent 类的具体实现。

AfterLogExportEvent

ActionLog 事件类

AfterLogPurgeEvent

ActionLog 事件类

AfterApiRouteEvent

AfterApiRoute 事件类

AfterCompressEvent

AfterCompress 事件类

AfterDispatchEvent

AfterDispatch 事件类

AfterExecuteEvent

AfterExecute 事件类

AfterInitialiseDocumentEvent

AfterInitialiseDocument 事件的事件类

AfterInitialiseEvent

AfterInitialise 事件类

AfterRenderEvent

AfterRender 事件类

AfterRespondEvent

AfterRespond 事件类

AfterRouteEvent

AfterRoute 事件类

AfterSaveConfigurationEvent

应用程序配置事件类

ApplicationConfigurationEvent

应用程序配置事件类

ApplicationDocumentEvent

应用程序文档事件类

ApplicationEvent

应用程序事件类

BeforeApiRouteEvent

BeforeApiRoute 事件类

BeforeCompileHeadEvent

BeforeCompileHead 事件类

BeforeExecuteEvent

BeforeExecute 事件类

BeforeRenderEvent

BeforeRender 事件类

BeforeRespondEvent

BeforeRespond 事件类

BeforeSaveConfigurationEvent

应用程序配置事件类

DaemonForkEvent

DaemonApplication 的 Fork 事件类

DaemonReceiveSignalEvent

DaemonApplication 的 ReceiveSignal 事件类

AfterPurgeEvent

缓存事件类

CaptchaSetupEvent

验证码设置事件

AfterCheckinEvent

Checkin 事件类

SubmitContactEvent

联系表单事件类

ValidateContactEvent

联系表单事件类

AfterDisplayEvent

内容事件类。

示例:new AfterDisplayEvent('onEventName', ['context' => 'com_example.example', 'subject' => $contentObject, 'params' => $params, 'page' => $pageNum]);

AfterTitleEvent

内容事件类。

示例:new AfterTitleEvent('onEventName', ['context' => 'com_example.example', 'subject' => $contentObject, 'params' => $params, 'page' => $pageNum]);

BeforeDisplayEvent

内容事件类。

示例:new BeforeDisplayEvent('onEventName', ['context' => 'com_example.example', 'subject' => $contentObject, 'params' => $params, 'page' => $pageNum]);

ContentEvent

内容事件基类

ContentPrepareEvent

内容事件类。

示例:new ContentPrepareEvent('onEventName', ['context' => 'com_example.example', 'subject' => $contentObject, 'params' => $params, 'page' => $pageNum]);

AbstractPrepareFieldEvent

自定义字段事件类

AfterPrepareFieldEvent

自定义字段事件类

BeforePrepareFieldEvent

自定义字段事件类

CustomFieldsEvent

自定义字段事件类

GetTypesEvent

自定义字段事件类

PrepareDomEvent

自定义字段事件类

PrepareFieldEvent

自定义字段事件类

EditorButtonsSetupEvent

编辑器设置事件

EditorSetupEvent

编辑器设置事件

AbstractExtensionEvent

扩展事件基类

AfterInstallEvent

扩展事件类

AfterUninstallEvent

扩展事件类

AfterUpdateEvent

扩展事件类

BeforeInstallEvent

扩展事件类

BeforeUninstallEvent

扩展事件类

BeforeUpdateEvent

扩展事件类

接口

FinderEventInterface

查找器事件接口类

AbstractFinderEvent

查找器事件类

AfterCategoryChangeStateEvent

模型事件类。

示例:new AfterCategoryChangeStateEvent('onEventName', ['context' => $extension, 'subject' => $primaryKeys, 'value' => $newState]);

AfterChangeStateEvent

模型事件类。

示例:new AfterChangeStateEvent('onEventName', ['context' => 'com_example.example', 'subject' => $primaryKeys, 'value' => $newState]);

AfterDeleteEvent

模型事件类。

示例:new AfterDeleteEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToDelete]);

AfterSaveEvent

模型事件类。

示例:new AfterSaveEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToSave, 'isNew' => $isNew]);

BeforeIndexEvent

查找器事件类。

示例:new BeforeIndexEvent('onEventName', []);

BeforeSaveEvent

模型事件类。

示例:new BeforeSaveEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToSave, 'isNew' => $isNew);

BuildIndexEvent

查找器事件类。

示例:new BuildIndexEvent('onEventName', []);

GarbageCollectionEvent

查找器事件类。

示例:new GarbageCollectionEvent('onEventName', []);

PrepareContentEvent

查找器事件类。

示例:new PrepareContentEvent('onEventName', ['subject' => $item]);

ResultEvent

查找器事件类。

示例:new ResultEvent('onEventName', ['subject' => $item, 'query' => $query]);

StartIndexEvent

查找器事件类。

示例:new StartIndexEvent('onEventName', []);

AddInstallationTabEvent

安装程序事件类

AfterInstallerEvent

安装程序事件类

BeforeInstallationEvent

安装程序事件类

BeforeInstallerEvent

安装程序事件类

BeforePackageDownloadEvent

安装程序事件类

InstallerEvent

安装程序事件类

AfterGetMenuTypeOptionsEvent

菜单事件类

BeforeRenderMenuItemsViewEvent

菜单事件类

PreprocessMenuItemsEvent

菜单事件类

AfterCategoryChangeStateEvent

模型事件类。

示例:new AfterCategoryChangeStateEvent('onEventName', ['context' => $extension, 'subject' => $primaryKeys, 'value' => $newState]);

AfterChangeStateEvent

模型事件类。

示例:new AfterChangeStateEvent('onEventName', ['context' => 'com_example.example', 'subject' => $primaryKeys, 'value' => $newState]);

AfterCleanCacheEvent

清除缓存事件类

AfterDeleteEvent

模型事件类。

示例:new AfterDeleteEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToDelete]);

AfterSaveEvent

模型事件类。

示例:new AfterSaveEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToSave, 'isNew' => $isNew, 'data' => $submittedData]);

BeforeBatchEvent

在应用批处理事件之前修改表对象的事件类

BeforeChangeStateEvent

模型事件类。

示例:new BeforeChangeStateEvent('onEventName', ['context' => 'com_example.example', 'subject' => $primaryKeys, 'value' => $newState]);

BeforeDeleteEvent

模型事件类。

示例:new BeforeDeleteEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToDelete]);

BeforeSaveEvent

模型事件类。

示例:new BeforeSaveEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToSave, 'isNew' => $isNew, 'data' => $submittedData]);

BeforeValidateDataEvent

模型表单事件类。

示例:new BeforeValidateDataEvent('onEventName', ['subject' => $form, 'data' => $data]);

ChangeStateEvent

模型事件类

DeleteEvent

模型事件类

FormEvent

模型表单事件类

ModelEvent

模型事件的基类

NormaliseRequestDataEvent

模型表单事件类。

示例:new NormaliseRequestDataEvent('onEventName', ['context' => 'com_example.example', 'data' => $data, 'subject' => $form]);

PrepareDataEvent

模型事件类。

示例:new PrepareDataEvent('onEventName', ['context' => 'com_example.example', 'subject' => $data]);

PrepareFormEvent

模型表单事件类。

示例:new PrepareFormEvent('onEventName', ['subject' => $form, 'data' => $data]);

SaveEvent

模型事件类

AfterCleanModuleListEvent

模块事件类。

示例:new AfterCleanModuleListEvent('onEventName', ['subject' => $modules]);

AfterModuleListEvent

模块事件类。

示例:new AfterModuleListEvent('onEventName', ['subject' => $modules]);

AfterRenderModuleEvent

模块事件类。

示例:new AfterRenderModuleEvent('onEventName', ['subject' => $module, 'attributes' => $attrs]);

AfterRenderModulesEvent

模块事件类。

示例:new AfterRenderModulesEvent('onEventName', ['subject' => $content, 'attributes' => $attrs]);

BeforeRenderModuleEvent

模块事件类。

示例:new BeforeRenderModuleEvent('onEventName', ['subject' => $module, 'attributes' => $attrs]);

ModuleEvent

模块事件的基类

ModuleListEvent

模块事件类

PrepareModuleListEvent

模块事件类。

示例:new AfterModuleListEvent('onEventName', ['subject' => $modules]);

RenderModuleEvent

模块事件类

BeforeDisplayMethods

onUserMultifactorBeforeDisplayMethods 事件的具体事件类

Callback

onUserMultifactorCallback 事件的具体事件类

Captive

onUserMultifactorCaptive 事件的具体事件类

GetMethod

onUserMultifactorGetMethod 事件的具体事件类

GetSetup

onUserMultifactorGetSetup 事件的具体事件类

NotifyActionLog

用于通知用户操作日志插件双因素认证操作的自定义事件的具体事件类。

SaveSetup

onUserMultifactorSaveSetup 事件的具体事件类

Validate

onUserMultifactorValidate 事件的具体事件类

GetKeyEvent

页面缓存事件类

IsExcludedEvent

页面缓存事件类

PageCacheEvent

页面缓存事件类

SetCachingEvent

页面缓存事件类

AjaxEvent

onAjax... 事件类

BeforeCompileHeadEvent

SchemaBeforeCompileHeadEvent 事件类 示例:new BeforeCompileHeadEvent('onSchemaBeforeCompileHead', ['subject' => $schema, 'context' => 'com_example.example']);

PrepareDataEvent

SchemaPrepareDataEvent 事件类 示例:new PrepareDataEvent('onSchemaPrepareData', ['subject' => $data, 'context' => 'com_example.example']);

PrepareFormEvent

SchemaPrepareFormEvent 事件类 示例:new PrepareFormEvent('onSchemaPrepareForm', ['subject' => $form]);

PrepareSaveEvent

SchemaPrepareSaveEvent 事件类 示例:new PrepareFormEvent('onSchemaPrepareForm', ['subject' => $subject, 'context' => $context, 'item' => $table, 'isNew' => $isNew, 'schema' => $schema]);

Ajax

onAjaxWebauthn 事件的具体事件类

AjaxChallenge

onAjaxWebauthnChallenge 事件的具体事件类

AjaxCreate

onAjaxWebauthnCreate 事件的具体事件类

AjaxDelete

onAjaxWebauthnDelete 事件的具体事件类

AjaxInitCreate

onAjaxWebauthnInitcreate 事件的具体事件类

AjaxLogin

onAjaxWebauthnLogin 事件的具体事件类

AjaxSaveLabel

onAjaxWebauthnSavelabel 事件的具体事件类

CanRemoveDataEvent

隐私事件类。

示例:new CanRemoveDataEvent('onEventName', ['subject' => $requestTable, 'user' => $user]);

CheckPrivacyPolicyPublishedEvent

隐私事件类。

示例:new CheckPrivacyPolicyPublishedEvent('onEventName', ['subject' => $policyInfo]);

CollectCapabilitiesEvent

隐私事件类。

示例:new CollectCapabilitiesEvent('onEventName');

ExportRequestEvent

隐私事件类。

示例:new ExportRequestEvent('onEventName', ['subject' => $requestTable, 'user' => $user]);

PrivacyEvent

隐私事件的基类

RemoveDataEvent

隐私事件类。

示例:new RemoveDataEvent('onEventName', ['subject' => $requestTable, 'user' => $user]);

GetIconEvent

onGetIcon 事件的事件类。

Traits

ResultAware

此 Trait 部分实现了可变和不可变事件的 ResultAwareInterface。

您还必须实现 typeCheckResult 方法或在事件处理程序中使用 ResultType*Aware Trait 之一。

ResultTypeArrayAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置数组类型的结果。

ResultTypeBooleanAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置布尔类型的结果。

ResultTypeFloatAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置浮点类型的结果。

ResultTypeIntegerAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置整数类型的结果。

ResultTypeMixedAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置任何类型的结果。这是一种权宜之计!如果您期望可为空或联合类型,最好自己实现 typeCheckResult 方法以检查您期望的确切类型。

ResultTypeNumericAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置数值类型的结果。

ResultTypeObjectAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置对象类型的结果。如果您未设置可接受的结果类的列表,则任何 PHP 对象都将满足此类型检查。

ResultTypeStringAware

此 Trait 部分实现了用于类型检查的 ResultAwareInterface。

使用此 Trait(以及 ResultAware Trait)的事件将期望事件处理程序设置字符串类型的结果。

接口

ResultAwareInterface

定义一个事件,该事件具有名为“result”的追加式数组参数。

这用于事件,其处理程序在调用时预计会返回某些内容,类似于早期版本的 Joomla 中许多插件事件的工作方式。此接口由 ResultAware Trait 部分实现。typeCheckResult 方法由各种 ResultType*Aware Trait 实现。您的事件需要同时使用 ResultAware Trait 和 ResultType*Aware Trait 之一。例如,如果您的事件返回布尔结果,则需要在事件中使用 ResultAware 和 ResultTypeBooleanAware Trait。

AbstractEvent

表格事件的事件类

AfterBindEvent

\Joomla\CMS\Table\Table onAfterBind 事件的事件类

AfterCheckinEvent

\Joomla\CMS\Table\Table onAfterCheckin 事件的事件类

AfterCheckoutEvent

\Joomla\CMS\Table\Table onAfterCheckout 事件的事件类

AfterDeleteEvent

\Joomla\CMS\Table\Table onAfterDelete 事件的事件类

AfterHitEvent

\Joomla\CMS\Table\Table onAfterHit 事件的事件类

AfterLoadEvent

\Joomla\CMS\Table\Table onAfterLoad 事件的事件类

AfterMoveEvent

\Joomla\CMS\Table\Table onAfterMove 事件的事件类

AfterPublishEvent

\Joomla\CMS\Table\Table onAfterPublish 事件的事件类

AfterReorderEvent

\Joomla\CMS\Table\Table onAfterReorder 事件的事件类

AfterResetEvent

\Joomla\CMS\Table\Table onAfterReset 事件的事件类

AfterStoreEvent

\Joomla\CMS\Table\Table onAfterStore 事件的事件类

BeforeBindEvent

Table onBeforeBind 事件的事件类

BeforeCheckinEvent

\Joomla\CMS\Table\Table onBeforeCheckin 事件的事件类

BeforeCheckoutEvent

\Joomla\CMS\Table\Table onBeforeCheckout 事件的事件类

BeforeDeleteEvent

\Joomla\CMS\Table\Table onBeforeDelete 事件的事件类

BeforeHitEvent

\Joomla\CMS\Table\Table onBeforeHit 事件的事件类

BeforeLoadEvent

\Joomla\CMS\Table\Table onBeforeLoad 事件的事件类

BeforeMoveEvent

\Joomla\CMS\Table\Table onBeforeMove 事件的事件类

BeforePublishEvent

\Joomla\CMS\Table\Table onBeforePublish 事件的事件类

BeforeReorderEvent

\Joomla\CMS\Table\Table onBeforeReorder 事件的事件类

BeforeResetEvent

\Joomla\CMS\Table\Table onBeforeReset 事件的事件类

BeforeStoreEvent

\Joomla\CMS\Table\Table onBeforeStore 事件的事件类

CheckEvent

\Joomla\CMS\Table\Table onCheck 事件的事件类

ObjectCreateEvent

\Joomla\CMS\Table\Table onObjectCreate 事件的事件类

SetNewTagsEvent

\Joomla\CMS\Table\Table onSetNewTags 事件的事件类

AbstractDeleteEvent

用户删除事件的基类

AbstractLoginEvent

用户登录事件的基类

AbstractLogoutEvent

用户注销事件的基类

AbstractSaveEvent

用户保存事件的基类

AfterDeleteEvent

用户删除事件类。

示例:new AfterDeleteEvent('onEventName', ['subject' => $userArray, 'deletingResult' => $result, 'errorMessage' => $errorStr]);

AfterLoginEvent

用户事件类。

示例:new AfterLoginEvent('onEventName', ['subject' => $authenticationResponseArray, 'options' => $options]);

AfterLogoutEvent

用户事件类。

示例:new AfterLogoutEvent('onEventName', ['subject' => $parameters, 'options' => $options]);

AfterRemindEvent

用户事件类。

示例:new AfterRemindEvent('onEventName', ['subject' => $user]);

AfterSaveEvent

用户保存事件类。

示例:new AfterSaveEvent('onEventName', ['subject' => $userArray, 'isNew' => $isNew, 'savingResult' => $result, 'errorMessage' => $errorStr]);

AuthenticationEvent

用户事件类。

示例:new AuthenticationEvent('onEventName', ['credentials' => $credentials, 'options' => $options, 'subject' => $authenticationResponse]);

AuthorisationEvent

用户事件类。

示例:new AuthorisationEvent('onEventName', ['subject' => $authenticationResponse, 'options' => $options]);

AuthorisationFailureEvent

用户事件类。

示例:new AuthorisationFailureEvent('onEventName', ['subject' => $authenticationResponseArray, 'options' => $options]);

BeforeDeleteEvent

用户删除事件类。

示例:new BeforeDeleteEvent('onEventName', ['subject' => $userArray]);

BeforeSaveEvent

用户保存事件类。

示例:new BeforeSaveEvent('onEventName', ['subject' => $oldUserArray, 'isNew' => $isNew, 'data' => $data]);

LoginButtonsEvent

用户事件类。

示例:new LoginButtonsEvent('onEventName', ['subject' => $formId]);

LoginEvent

用户事件类。

示例:new LoginEvent('onEventName', ['subject' => $authenticationResponseArray, 'options' => $options]);

LoginFailureEvent

用户事件类。

示例:new LoginFailureEvent('onEventName', ['subject' => $authenticationResponseArray, 'options' => $options]);

LogoutEvent

用户事件类。

示例:new LogoutEvent('onEventName', ['subject' => $parameters, 'options' => $options]);

LogoutFailureEvent

用户事件类。

示例:new LogoutFailureEvent('onEventName', ['subject' => $parameters, 'options' => $options]);

UserEvent

用户事件的基类

UserGroupAfterDeleteEvent

模型事件类。

示例:new UserGroupAfterDeleteEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToDelete]);

UserGroupBeforeDeleteEvent

模型事件类。

示例:new UserGroupBeforeDeleteEvent('onEventName', ['context' => 'com_example.example', 'subject' => $itemObjectToDelete]);

DisplayEvent

WebAsset 事件的事件类

AbstractEvent

WebAsset 事件的事件类

WebAssetRegistryAssetChanged

WebAssetRegistry“资产已更改”事件的事件类

AbstractEvent

WebAsset 事件的事件类

WorkflowFunctionalityUsedEvent

工作流功能使用事件的事件类

WorkflowTransitionEvent

工作流功能使用事件的事件类