CRUD Hooks
You may need to add some custom functionality when your CRUDs are created/saved/deleted/etc.
You can use the following hooks by adding a configureHooks method to your CRUD controller. E.g.
protected function configureHooks()
{
Eventy::addAction('crud.store.after', function ($request, $item) {
do('somestuff');
}, 10, 2);
}
Available Hooks
Config
// Allows for modification of a specific Crud
Eventy::filter('enso.' . $crud_name . '.config.js-config', $config)
Index (Controller)
// XHR routes, before query building begins.
Eventy::action('crud.index.before', $request, $config)
// For overriding ordering and searching parameters
Eventy::filter('crud.index.overrideArgs', $args)
// Before response is returned
Eventy::action('crud.index.beforeAjax', $request, $config, $items)
Create route (Controller)
// For overriding the crud form view
Eventy::filter('crud.create.view', $view_name, $config, $request)
// For Custom updates to the config prior to json data conversion
Eventy::action('crud.create', $config, $request)
Clone route (Controller)
// Altering how the clone process occurs
Eventy::action('crud.clone.replciate-item', $config, $request, $clone)
// Alter Cloning of relationships from the base item
Eventy::action('crud.clone.replciate-relations', $config, $request, $item, $clone)
Store route (Controller)
// Alter $config & request prior to validation checks
Eventy::action('crud.store.before-validation', $config, $request)
// Alter validation rules
Eventy::filter('crud.store.rules', $rules, $config, $request)
// Alter validation messages
Eventy::filter('crud.store.messages', $messages, $config, $request)
// Alter data to store
Eventy::filter('crud.store.data', $request_data, $config, $request)
// Final config updates prior to saving the updates to a new model
Eventy::action('crud.store.before', $config, $request)
// Alter config (and so item) after save is complete
Eventy::action('crud.store.after', $config, $request)
// Alter XHR response data
Eventy::filter('crud.store.xhr-success', $response_data, $config, $request)
Edit route (Controller)
// For overriding the crud form view
Eventy::filter('crud.edit.view', $view_name, $config, $request)
// For Custom updates to the config & item prior to json data conversion
Eventy::action('crud.edit', $config, $request)
Update route (Controller)
// Alter $config & request prior to validation checks
Eventy::action('crud.update.before-validation', $config, $request)
// Alter validation rules
Eventy::filter('crud.update.rules', $rules, $config, $request)
// Alter validation messages
Eventy::filter('crud.update.messages', $messages $config, $request)
// Alter data to store
Eventy::filter('crud.update.data', $request_data, $config, $request)
// Final config updates prior to updating the model
Eventy::action('crud.update.before', $config, $request)
// Alter config (and so item) after save is complete
Eventy::action('crud.update.after', $config, $request)
// Alter XHR response data
Eventy::filter('crud.update.xhr-success', $response_data, $config, $request)
Delete route (Controller)
// Alterations to make before deleting item
Eventy::action('crud.destroy.before', $config, $request, $item)
// Alterations to make after deleting item
Eventy::action('crud.destroy.after', $config, $request);
// Alter XHR response data
Eventy::filter('crud.delete.xhr-success', $response_data, $config, $request)
Re-order route (Controller)
// Actions to take before reorder attempted
Eventy::action('crud.reorder.before', $config, $request)
// Alter id of item to move
Eventy::filter('crud.reorder.id', $id, $config, $request)
// Alter change to make
Eventy::filter('crud.reorder.change', $change, $config, $request)
// Actions to take after reorder attempted
Eventy::action('crud.reorder.after', $updated, $config, $request)
Controller Methods
You can also override the beforeSaveCallback and afterSaveCallback methods on your Crud controller. These methods both take the same arguments.
public function beforeSaveCallback(Model $model, array $data, string $action): Model
{
// Do stuff with your model here
return $model;
}