You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Model Service documentation is missing a description of the $_hook_id property. The example I have found that uses this property is within the Member Model.
Reasoning
I was developing an add-on that contains a Contact model which belongsTo the ee:Member model.
Being curious in the process in which member models are saved/updated/inserted/deleted, I went searching for the extension hook call before_member_save($member, $values).
Based on the documentation, I was lead to believe that all extension hooks are invoked via some code that looks like:
if (ee()->extensions->active_hook('some_hook_method') === TRUE)
{
$str = ee()->extensions->call('some_hook_method', $hook_args...);
}
Unable to locate the existence of such code, with the hook method before_member_save, I did some deeper digging.
Models which have a $_hook_id property defined are exposed to extension hook calls (Event name, either 'insert', 'update', 'save', or 'delete') based on the following convention:
Internal events on the Model are also emitted without having to call them externally: For example:
$model = ee('Model')->get('Member')->first();
$model->validate(); // internally, $this->emit('beforeValidate') and $this->emit('afterValidate') are called$model->save(); // internally, $this->emit('beforeSave') and $this->emit('afterSave') are called// .... etc
Before I was attaching my own events for these actions and having to emit (invoke) them manually.
Suggested Change
The Model Service documentation is missing a description of the
$_hook_id
property. The example I have found that uses this property is within the Member Model.Reasoning
I was developing an add-on that contains a
Contact
model whichbelongsTo
theee:Member
model.Being curious in the process in which member models are saved/updated/inserted/deleted, I went searching for the extension hook call
before_member_save($member, $values)
.Based on the documentation, I was lead to believe that all extension hooks are invoked via some code that looks like:
Unable to locate the existence of such code, with the hook method
before_member_save
, I did some deeper digging.I learned that Models, which extend the
ExpressionEngine\Service\Model
class invoke theforwardEventToHooks($event)
method. Walking through the code of this method, I discovered that:$_hook_id
property defined are exposed to extension hook calls (Event name, either 'insert', 'update', 'save', or 'delete') based on the following convention:Before I was attaching my own events for these actions and having to emit (invoke) them manually.
Additional context
I would recommend adding this documentation here: Building your own Models
The text was updated successfully, but these errors were encountered: