что означает неопределенный индекс: team_id в Laravel - PullRequest
0 голосов
/ 06 октября 2018

Я нахожусь в процессе изменения процесса регистрации.Когда пользователь приглашен, он назначается в ту же команду.И если он регистрируется сам, он может выбрать команду.

Все работает, кроме с team_id.Я всегда получаю сообщение об ошибке:

Undefined index: team_id

Что означает сообщение об ошибке?Как я могу исправить ошибку?

Я не понимаю, почему это не работает, потому что та же функция работает с аватаром.

Функция:

/**
 * Get a validator for an incoming registration request.
 *
 * @param  array  $data
 * @return \Illuminate\Contracts\Validation\Validator
 */
protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|string|max:30',
        'username' => 'required|string|max:20|alpha_num|unique:users',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6',
        'birthday' => 'required|date|before_or_equal:-16 years',
        'agb' => 'accepted',
        'gender' => 'required|boolean',
        'team_id' => 'numeric'
    ]);
}

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    if($data['gender'])

    {
        $avatar = 'defaults\avatars\male.jpg';
    }

    else

    {
        $avatar = 'defaults\avatars\female.jpg';
    }



if($data['team_id'])
        {
            $team = $data['team_id'];
        }

        else
        {
            $team = Null;
        }


    $user = User::create([
        'name' => $data['name'],
        'team_id' => $team,
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'birthday' => $data['birthday'],
        'gender' => $data['gender'],
        'slug' => str_slug($data['username']),
        'avatar' => $avatar,
        'active' => false,
        'activation_token' => str_random(255)
    ]);

    Profile::create(['user_id' => $user->id ]);

    while (true) {
        $randomstring = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyz"), 0, 7);
        if (Invite::where('url','!=', $randomstring)->exists()) {
            Invite::create([
            'user_id' => $user->id,
            'url' => $randomstring
            ]);
            break;
        }
    }
    return $user;
}

1 Ответ

0 голосов
/ 06 октября 2018

Прочтите ошибку, и вы сможете понять, что это значит.

См. Эту строку:

if($data['team_id'])

Что если массив $data просто не содержит team_id индекс?Этот код не действителен так.Если вы хотите проверить это, вы должны использовать array_key_exists ()

if (array_key_exists('team_id', $key) && $data['team_id'])

или

if (isset($key['team_id']) && $data['team_id'])

Оба безопасных способа сделать то, что вы хотите.

...