# Keeping track of how an action was run

# The runningAs method

In some rare cases, you might want to know how the action is being run. You can access this information using the runningAs method.

public function handle()
{
    $this->runningAs('object');
    $this->runningAs('job');
    $this->runningAs('listener');
    $this->runningAs('controller');
    $this->runningAs('command');

    // Returns true if any of them is true.
    $this->runningAs('object', 'job');
}

# The before hooks

If you want to execute some code only when the action is running as a certain type, you can use the before hooks asObject, asJob, asListener, asController and asCommand.

public function asController(Request $request)
{
    $this->token = $request->cookie('token');
}

If you want to prepare the data before running the action (and thus also before validating the data), you can use the prepareForValidation method. This method will be run before the as... methods, no matter how the action is running as.

TIP

It is worth noting that, just like the handle method, the prepareForValidation method and the as... methods support dependency injections.

TIP

The page "The lifecycle of an action" provides a handy summary of all methods that an Action will call before and after executing the handle method.

WARNING

These before hooks will be executed at every run. This means you cannot use the asController method to register your middleware. You need to use the middleware method instead.