Как исправить привязку, чтобы получить имя свойства в представлении

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

введите здесь описание изображения

Я пытался отправить его в виде массива и 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 вид



                            <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 (имя, адрес электронной почты)


person ahamba solomon    schedule 15.08.2019    source источник


Ответы (2)


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

Измените {{$data->name}} в своем лезвии на {{$data['name']}}

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

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

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

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

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

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

person online Thomas    schedule 15.08.2019