在 Laravel Spark 注册期间向团队添加新规则
Add new rules to team during registration in Laravel Spark
我目前想在 Laravel Spark 注册期间修改一些验证规则。我已经添加了几个我想添加到模型中的新输入,但由于某种原因,验证没有被命中。下面是我 SparkServiceProvider
:
中的代码
Spark::swap('CreateTeam@rules', function () {
return [
'name' => 'required|max:255',
'city' => 'required|max:255',
'state' => 'required|max:255',
];
});
Spark::swap('CreateTeam@validator', function ($user, array $data) {
$validator = \Validator::make($data, Spark::call(static::class.'@rules'));
$validator->sometimes('slug', 'required|alpha_dash|max:255|unique:teams,slug', function () {
return Spark::teamsIdentifiedByPath();
});
$validator->after(function ($validator) use ($user) {
$this->validateMaximumTeamsNotExceeded($validator, $user);
});
return $validator;
});
我也曾尝试覆盖 CreateTeam 接口,然后将其绑定到我的 AppServiceProvider 中,但这也没有奏效。任何帮助将不胜感激。
我明白了。使用 Spark::swap
方法,我能够像这样替换默认的 CreateUser@validator
方法:
Spark::swap('CreateUser@validator', function ($request) {
/**
* @var Validator $validator
*/
$validator = $this->baseValidator($request);
$validator->sometimes('team', 'required|max:255', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
! isset($input['invitation']);
});
$validator->sometimes(['city', 'state'], 'required|max:100', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
! isset($input['invitation']);
});
$validator->sometimes('team_slug', 'required|alpha_dash|max:255|unique:teams,slug', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
Spark::teamsIdentifiedByPath() &&
! isset($input['invitation']);
});
return $validator;
});
我目前想在 Laravel Spark 注册期间修改一些验证规则。我已经添加了几个我想添加到模型中的新输入,但由于某种原因,验证没有被命中。下面是我 SparkServiceProvider
:
Spark::swap('CreateTeam@rules', function () {
return [
'name' => 'required|max:255',
'city' => 'required|max:255',
'state' => 'required|max:255',
];
});
Spark::swap('CreateTeam@validator', function ($user, array $data) {
$validator = \Validator::make($data, Spark::call(static::class.'@rules'));
$validator->sometimes('slug', 'required|alpha_dash|max:255|unique:teams,slug', function () {
return Spark::teamsIdentifiedByPath();
});
$validator->after(function ($validator) use ($user) {
$this->validateMaximumTeamsNotExceeded($validator, $user);
});
return $validator;
});
我也曾尝试覆盖 CreateTeam 接口,然后将其绑定到我的 AppServiceProvider 中,但这也没有奏效。任何帮助将不胜感激。
我明白了。使用 Spark::swap
方法,我能够像这样替换默认的 CreateUser@validator
方法:
Spark::swap('CreateUser@validator', function ($request) {
/**
* @var Validator $validator
*/
$validator = $this->baseValidator($request);
$validator->sometimes('team', 'required|max:255', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
! isset($input['invitation']);
});
$validator->sometimes(['city', 'state'], 'required|max:100', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
! isset($input['invitation']);
});
$validator->sometimes('team_slug', 'required|alpha_dash|max:255|unique:teams,slug', function ($input) {
return Spark::usesTeams() &&
Spark::onlyTeamPlans() &&
Spark::teamsIdentifiedByPath() &&
! isset($input['invitation']);
});
return $validator;
});