Как сохранить user_id в базе данных, используя Laravel Vue. js - PullRequest
1 голос
/ 17 марта 2020

Я создаю, чтобы получить местоположение пользователя в реальном времени при нажатии кнопки, используя laravel, толкатель и vue. js. Все работают нормально, но я также вставляю идентификатор авторизации и не знаю, как использовать это в laravel, используя vue. js. Подскажите, пожалуйста, как мне сохранить идентификатор авторизации пользователя, используя vue. js.

ExampleComponent. vue

<template>
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Example Component</div>
                <button class="btn btn-success" @click="updateLocation">Update Position</button>
                <div class="card-body">

                    <div id="realtimemap" style="height: 412px; width: 100%;"></div>

                </div>
            </div>
        </div>
    </div>
</div>
</template>

<script>

     export default{

     data(){

        return{
            map:null,
            marker:null,
            center:{lat: 10, lng: 10},
            data:null,
            lineCoordinates:[]
        }
    },

    methods:{

        mapInit(){


            this.map = new google.maps.Map(document.getElementById('realtimemap'),{
                center: this.center,
                zoom: 8
            });

            this.marker = new google.maps.Marker({
                map: this.map,
                position: this.center,
                animation:"bounce",
            });
        },

        updateMap(){
            let newPosition = {lat:this.data.lat,lng:this.data.long};
            this.map.setCenter(newPosition);
            this.marker.setPosition(newPosition);

            this.lineCoordinates.push(new google.maps.LatLng(newPosition.lat,newPosition.lng));

            var lineCoordinatesPath = new google.maps.Polyline({
                path: this.lineCoordinates,
                geodesic: true,
                map: this.map,
                strokeColor: '#FF000',
                strokeOpacity: 1.0,
                strokeWeight: 2
            });
        },

        updateLocation(){

            let randomNumber=Math.random();

            let position={
                lat:10+randomNumber,
                long:10+randomNumber
            };

            axios.post('/api/map',position).then(response=>{
                console.log(response);
            })
        }

    },

    mounted() {
        console.log('Component mounted.');
        this.mapInit();
    },
    created(){
        Echo.channel('location')
            .listen('SendLocation', (e) => {
                this.data=e.location;

                this.updateMap();
                console.log(e);
        });
        }
       }
    </script>

welcome.blade . php

<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>Laravel</title>

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">

    <link rel="stylesheet" href="{{asset('css/app.css')}}">

</head>
<body>
    <div class="flex-center position-ref full-height">
        <!--@if (Route::has('login'))
            <div class="top-right links">
                @if (Auth::check())
                    <a href="{{ url('/home') }}">Home</a>
                @else
                    <a href="{{ url('/login') }}">Login</a>
                    <a href="{{ url('/register') }}">Register</a>
                @endif
            </div>
        @endif-->

        <div class="content">
            <div class="title m-b-md" id="app">
                <example-component></example-component>
            </div>
        </div>
    </div>

     <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDfRzdTIIRmsW1VaQiOzZCuRngBKqw3QUU&callback=initMap" type="text/javascript"></script>
    <script src="{{ asset('js/app.js') }}"></script>
</body>

полученное сообщение об ошибке

enter image description here

Пожалуйста, помогите мне.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

На вашем ExampleComponent.vue вам нужно определить новый реквизит:

export default{ 
  props: {
    userId: {
      type: string, 
      required: true,
    }
  }
}

Вкл. Когда вы вызываете компонент, вам нужно передать этот реквизит:

<div class="content">
  <div class="title m-b-md" id="app">
    <example-component 
      :user-id="{{ Auth::user()->id }}"
    ></example-component>
  </div>
</div>

на ваш updateLocation() функция:

const position = {
   lat: 10 + randomNumber,
   long: 10 + randomNumber,
   user_id: id_user
};

ресурсы, которые могут помочь вам понять это решение:

Реквизит VueJS

0 голосов
/ 17 марта 2020

добавить это на updateLocation().

let position={
   lat:10+randomNumber,
   long:10+randomNumber,
   user_id:id_user
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...