我正在使用Laravel租用软件包,其中数据库中有一个domains
表,并且该表中domain
列中的每个值都附加了.test.co.uk.
当用户在表单中输入URL时,将向他们显示一个输入元素(如上所示),在其中输入URL /域,但是已经附加了.test.co.uk
,因此他们唯一需要输入的内容是在此之前的文本,例如他们将输入johnsmith
,并在domain
列中存储johnsmith.test.co.uk.
我遇到的问题是,我需要在此列上进行唯一性验证,但还要包含.test.co.uk
执行验证时,它会查看表中存储的值,因为如果用户输入johnsmith
且domains
表中当前有一条记录,其中值为johnsmith.test.co.uk
,则验证将通过,但在这种情况下我需要验证失败。我目前正在使用Request
类,它扩展了FormRequest
类并具有以下特点:
public function rules()
{
return [
'url' => 'required|string|unique:domains,domain',
];
}
我也尝试过规则对象,但是我认为规则对象不是解决此问题的正确方法。有一种方便的“ Laravel”方法可以做到这一点吗?
答案 0 :(得分:2)
在您的Request类中,使用prepareForValidation()
文档:https://laravel.com/docs/7.x/validation#prepare-input-for-validation
protected function prepareForValidation()
{
$this->merge([
'url' => $this->url . '.test.co.uk',
]);
}