He estado trabajando en la creación de una tabla simple que obtiene sus datos de una base de datos mongodb que se consulta por los datos json y no los datos deben pasarse al componente vue en la interfaz, pero no puedo entender cómo los datos json se transfiere de laravel a vue. Para entender el código, esto es lo que he hecho hasta ahora:
ruta api.php:
Route::middleware('api')->group(function () { Route::resource('/home', [ProductController::class,'home']); });ruta web.php:
Route::get('/home', [PostController::class,'home']);Método de inicio de PostController:
public function home() { $posts = Post::paginate(4); return response()->json($posts); }Componente de inicio:
<template> <div> <table> <tr> <td>Id</td> <td>Title</td> <td>Status</td> </tr> <tr v-for="El in results" v-bind:key="El.id" > <td>{{El.id}}</td> <td>{{El.STATUS}}</td> </tr> </table> </div> </template> <script> export default{ data() { return { results: [] }; }, methods: { fetch() { axios.get('/api/home') .then(response => this.results = response.data) .catch(error => console.log(error)); } } } </script> @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Data</div> <div class="card-body"> <home-component></home-component> </div> </div> </div> </div> </div> @endsectionTodo esto parece estar bien, pero cuando ejecuto el código, solo muestra el json y no representa ninguno de los componentes de vue. Cualquier ayuda es apreciada.
Está utilizando la URL /home tanto como un punto final de datos como un punto final HTML. Lo que debes hacer es diseñarlo algo como esto:
Route: GET /api/home Returns: JSON data Code: `return response()->json(...);` Route:: GET /home Returns: HTML data with javascript that requests /api/home Code: `return view('home');`Ambas rutas son solicitudes http ordinarias, pero una solo sirve datos JSON y la otra sirve datos HTML para que los interprete su navegador.