Digging Deeper

Hooks

Hooks are designed to let you the ability to react on model's lifecycle of your models.

Hooks are designed in two ways, one around the resource and one on the controller.

Controller Hooks

On your rest controller you are able to listen to every endpoint such as: beforeDetails, beforeSearch, afterSearch, beforeMutate, afterMutate, beforeOperate, afterOperate, beforeDestroy, afterDestroy, beforeForceDestroy and afterForceDestroy.

class UsersController extends RestController
{
    public static $resource = App\Rest\Resources\UserResource::class;

    /**
     * Executed before details.
     *
     * @param DetailsRequest $request
     *
     * @return void
     */
    protected function beforeDetails(DetailsRequest $request): void
    {
        // 
    }
}

Resource Hooks

On your resource, you are able to listen to every lifecycle events. This happens in every part of the API even on relations.

Laravel Rest Api offers you methods such as: mutating, mutated, destroying, destroyed, restoring, restored, forceDestroying and forceDestroyed.

class UserResource extends Resource
{
    public function mutated(MutateRequest $request, array $requestBody, Model $model): void
    {
        if ($requestBody['operation'] === 'update') {
            Storage::put('images/avatars/'.$model->getKey().'.jpg', $requestBody['attributes']['file'])
        }
    }
}
Methods ending with "ing" happens before the event, those with "ed" after.

Copyright © 2024