在 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;
        });