我正在实现一个自定义验证规则,该规则应该在自定义验证规则的传递函数中采用另一个带有属性和值的参数。当我们在编写自定义验证时实现 Rule 接口时,它不允许我们在 pass 函数中添加第三个参数,但我需要第三个参数。此外,如果有人能够指导我在规则中包含数据库的最佳实践,我会感到很高兴。如果我们在自定义验证规则中需要一个表,那么我们应该只在规则中包含所需的模型,或者我们应该在验证规则中编写查询时使用 Illuminate\Support\Facades\DB 。我想要以下格式的 pass 函数
public function passes($attribute, $value,$extraparam)
{
/*Code here*/
}
您可以将额外的参数作为参数传递给规则的构造函数
use App\Rules\Uppercase;
$request->validate([
'name' => ['required', new Uppercase($param)],
]);
所以你可以将规则的类修改为
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Uppercase implements Rule
{
protected $extraParam;
public function __construct($param)
{
$this->extraParam = $param;
}
public function passes($attribute, $value)
{
// Access the extra param as $this->extraParam
return strtoupper($value) === $value;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)