Actions
Definition & Principles
Read Porto SAP Documentation (#Actions).
Rules
- All Actions MUST extend
App\Ship\Parents\Actions\Action
.
Folder Structure
- app
- Containers
- {section-name}
- {container-name}
- Actions
- CreateUserAction.php
- DeleteUserAction.php
- ...
Code Sample
Action
class CreateAdminAction extends Action
{
public function run(string $email, string $password, string $name, bool $isClient = false): User
{
$admin = app(CreateUserByCredentialsTask::class)->run(
$isClient,
$email,
$password,
$name
);
app(AssignUserToRoleTask::class)->run($admin, ['admin']);
return $admin;
}
}
Calling multiple Tasks
class DemoAction extends Action
{
public function run($xxx, $yyy, $zzz)
{
$foo = app(Sample111Task::class)->run($xxx, $yyy);
$bar = app(Sample222Task::class)->run($zzz);
}
}
Usage from a Controller
public function deleteUser(DeleteUserRequest $request)
{
$user = app(DeleteUserAction::class)->run($request);
return $this->deleted($user);
}
tip
The same Action MAY be called by multiple Controllers (Web, Api, Cli).