允许一个setAttribute()来防止另一个

时间:2017-06-27 05:46:14

标签: laravel backpack-for-laravel

我有一个实体,我为它创建了两个setAttribute函数:

public function setEndAttribute($value) { }

{{1}}

这些属性开始结束都是日期时间,我会在允许之前检查每个setter函数中的某些条件。在某些情况下,我会阻止或允许更新开始结束属性。

然而,我已经碰壁了,因为如果我阻止其中一个更新,我需要阻止两者。换句话说,如果用户尝试使用超出界限的开始日期更新实体,我需要阻止开始日期更新,但我也是需要阻止结束日期更新。

由于这是两个独立的功能,我不知道在这种情况下如何使用一个来防止另一个。

编辑:

由于答案非常明显(只需在一个函数中完成)而不添加这些额外的信息,我将补充说,使这个不那么简单的部分是我正在使用Backpack for Laravel。在Backpack管理面板中是CRUD,它允许我创建或更新我的实体。我正在使用date_range字段类型来允许在我的实体上设置 开始 结束 时间/日期。保存此功能后,我需要能够将 开始 结束 值传递给函数,在将它们设置在我的实体上之前验证它们。我发现在setStartAttribute()和setEndAttribute()之上创建两个独立的函数允许我验证这些值并选择是否将它们分配给实体,但是我需要能够使用一个统一的函数而不是两个单独的函数。正是这种与背包的整合使得这个问题对我来说不那么简单了。

1 个答案:

答案 0 :(得分:1)

如果那些startend属性以某种方式连接(如果另一个无效则无法设置),您最好设置一种方法来设置它们。像这样:

public function setStartAndEnd($start, $end)
{
    if ($start is valid && $end is valid)
    {
        $this->start = $start;
        $this->end = $end;
    }
}

您可以使用以下内容:

$entity->setStartAndEnd($date, $another_date);