Frictionless Solutions | Actions

11.0.0 2024-03-13 15:22 UTC

This package is auto-updated.

Last update: 2024-09-13 16:37:05 UTC


README

基于杰出的Loris Leiva Actions for Laravel,此包只是添加了一些方法以便使用糖语法包装。

这是针对10.x及以上版本,它与1.x版本不直接兼容。

安装

composer require frictionlessdigital/actions

请注意,包的根命名空间为Fls,而不是Frictionlessditial

配置

此包不需要配置。

使用

在此处阅读基本文档:Laravel Actions

Action::tap($value, $closure)

受保护的方法与tap()类似:在将其传递给$closure之后返回$value

return $this->tap(User::first(), fn(User $user) => $user->delete());

等价于

$user = User::first();

$user->delete();

return $user;

// $user;

Action::pipe($value, $closure)

类似于pipe(),此受保护的方法将在运行$closure后返回结果$value;闭包可以自由修改$value

return $this->pipe(User::first(), fn($user) => $user->delete());

等价于

$user = User::first();

return $user->delete();

// true;

Action::validated()

这是validateAttributes()的别名 - 返回通过rules()验证的属性数组。

use Fls\Actions\Action;

class UserAction extends Action
{
    public function rules()
    {
        return [
            'name' => ['required', 'string'],
            'email' => ['required', 'email'],
            'notes' => ['nullable', 'string'],
        ];
    }

    ...
    public function handle($attributes) {
        return $this->fill($attributes)->validated();
    }
}

UserAction::run([
    'name' => 'John',
    'email' => 'john@smith.com',
]);

//  ['name' => 'John', 'email' => 'john@smith.com']

Action::validate()

此方法将验证属性,如果数据无效则抛出异常,但返回值是类本身;这对于链式调用很有用。

use Fls\Actions\Action;

class UserAction extends Action
{
    ...
    public function handle(User $user, $attributes) {
        return $this->fill($attributes)
                    ->validate()
                    ->tap($user, fn(User $user) => $user->update($this->validated()));
    }
}

如果需要在链式调用另一个操作之前确保验证完成,则可能很有用。

Action::runInTransaction(...$attributes)

此方法将操作包装在数据库事务中。

use Fls\Actions\Action;
use App\User;

class CreateUserAction extends Action
{
    public function handle(User $user, $attributes) 
    {
        return $user->create($attributes);
    }
}

可以使用runrunInTransaction类似地执行。在后一种情况下,操作将在DB::transaction内部执行。返回值将在这两者之间匹配。

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅CONTRIBUTINGCODE_OF_CONDUCT以获取详细信息。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件support@frictionlesssolutions.com联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。