以下是我的模型的工作原理。我有一个具有expires_at列的Post模型。用户提供他们希望Post持续的天数的整数。
当我在控制器中进行验证时,这非常简单。只需验证“days”字段,然后将其转换为将来的截止日期。但现在我正在使用Ardent在模型中进行验证,我不知道如何实现这一点。我想我需要使用一个mutator,但将expires_at设置为整数似乎违反直觉。我也不确定Ardent是否在变异之前或之后验证。
答案 0 :(得分:1)
我想出了如何使用从确认字段等数据中删除冗余的代码来完成它。
public $autoPurgeRedundantAttributes = true;
function __construct() {
parent::__construct();
$this->purgeFilters[] = function($key) {
$purge = array('tempData', 'myAttribute');
return ! in_array($key, $purge);
};
}
您需要启用$autoPurgeRedundantAttributes
,否则将不会调用过滤器。然后向$purgeFilters
数组添加一个闭包,如果应该删除提供的属性,则返回false。 (在这种情况下是“天”)
然后您只需确保手动设置要验证的字段
$this->attributes['days'] = $value;
修改:现在位于official docs。我用他们的代码替换了上面的代码。