always-open/sidekick

一组辅助类,使您更容易打好这场好仗

v4.1.9 2023-08-15 17:34 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads Maintainability

一组辅助类,使您更容易打好这场好仗。

安装

您可以通过composer安装此包

composer require always-open/sidekick

版本支持

用法

辅助类

字符串辅助类

$ids = AlwaysOpen\Helpers\Strings::stringIdsToCollection('1,3,45, asdf,66,1,45,3');
var_dump($ids);

路由辅助类

此辅助类阻止了重定向循环的发生,其中可能会使用url()->previous(),但用户可能直接输入了url,因此previouscurrent是相同的。此辅助类阻止这种情况发生,同时允许您指定在这种情况下要前往的位置。

如果用户可以编辑用户资料并从多个屏幕访问它,则保存后的重定向响应可能如下所示

return response()->redirectTo(
    AlwaysOpen\Helpers\Routes::toRouteIfBackIsLoop('user.report')
);

在这里,用户将要么转到他们之前的URL,要么被发送到用户报告。

特质

按名称

将特质添加到您的模型中

<?php

namespace App\Models;

namespace AlwaysOpen\Sidekick\Models\Traits\ByName;

class OrderStage extends Model
{
    use ByName;
    
    const NEXT_DAY = 'Next Day';
   ...
}

使用特质通过名称获取模型

$overnight = OrderStage::byName('overnight');

当您使用常量进行操作时,效果很好

$overnight = OrderStage::byName(OrderStage::NEXT_DAY);

CascadeUpdate

如果您需要更新相关模型(如父子关系或文档上的行项目)的最后一次更新时间戳,则此特质非常有用。

在示例类Document中,有多个LineItem实例作为子实例。

在此示例中,您需要重写getRelationshipsToUpdate方法

class LineItem extends Model
{
    use CascadeUpdate;

    public function getRelationshipsToUpdate() : array
    {
        return [
            'Document',
        ];
    }

    public function CascadeUpdate() : HasOne

当LineItem实例被保存时,拥有者的Document上的UPDATED_AT列也会被更新。

有序

此特质确保所有实例都有一个下一个排序列值。未来的TODO是当其中一个排序值被更新时,更新其他实例,以保持所有实例的正确顺序。

测试

composer test

变更日志

请参阅变更日志,了解最近有哪些变化。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

致谢

许可

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