Я пытаюсь подключить laravel к социальной сети Facebook и GitHub, все работает хорошо, но после подключения к приложениям социальной сети я хочу вернуться к представлению auth.register с данными социального поставщика.

enter image description here

Я попытался отправить его в виде массива и JSON для представления, но все еще безрезультатно

Функция для получения данных от социального провайдера


    public function redirectToProvider($social)
    {
        return Socialite::driver($social)->redirect();
       // return dd($social);
      // return $social;
    }

Функция для обработки результата


 public function handleProviderCallback($social)
    {
        //$social = 'github';
        $gituser = Socialite::driver($social)->user();

        $user = User::where('provider_id', $gituser->getEmail())->first();

            if($user){
                \Auth::login($user, true); 
                return redirect($this->redirectTo);
             }else{
                  'nemail' => $gituser->getemail()]);
                return view('auth.register')->with('data', ['name' => $gituser->getName(), 'email' => $gituser->getemail()]); 
            }

    }

Auth.register view



                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }} {{$data->name}}" required autocomplete="name" autofocus>

                                @error('name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }} {{$data->email}} " required autocomplete="email">

                                @error('email')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

Я ожидаю, что в результате данные из предоставленной социальной сети будут вставлены в мое поле формы auth.register (имя, адрес электронной почты)

0
ahamba solomon 15 Авг 2019 в 10:35

2 ответа

Лучший ответ

Вы заполняете переменную $data array и получаете доступ к ней как object.

Измените {{$data->name}} в вашем блейде на {{$data['name']}}

Или измените переменную $data.

return view('auth.register')->with('data', (object)['name' => $gituser->getName(), 'email' => $gituser->getemail()]); 
0
N69S 15 Авг 2019 в 08:12

Ошибка в {{$data->name}}, где data не является object, что логично, когда вы передаете данные как

return view('auth.register')->with('data', ['name' => $gituser->getName(), 'email' => $gituser->getemail()]);

Которая является array нотацией.

Для доступа к массиву вам нужно []: {{ data['name'] }}

3
online Thomas 15 Авг 2019 в 07:49