Transmettre les données de vue.js à Laravel 9
P粉951914381
P粉951914381 2023-08-31 16:37:26
0
1
466

Problème : erreur de serveur interne lors de la transmission de données de vue.js à laravel à l'aide d'axios

J'ai créé un nouveau projet Laravel et installé Breece en utilisant vue (php artisan Breeze : install vue). Ensuite, j'ai créé un contrôleur de menu et rendu menu.vue comme ceci :

index de fonction publique() { $menuItems = Menu :: tous (); return Inertia::render('Menu', [ 'menuItems' => $menuItems ]); } 

Route::get('menu',[MenuController::class,'index']); Maintenant, j'ai créé CartController

input('id'); $menu = Menu :: trouver ($ menu_id); $cart=nouveau panier(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); } } 

Ici, je dois stocker les données renvoyées par menu.vue menu.vue

 importer { Head } depuis '@inertiajs/vue3' ;     

{{ nom de l'article }}

Ajouter

问题是当这被调用时

axios .post("/cart", { menu_id : élément.id, }) 

它给了我这个错误: 错误

这是我的 app.js

axios importer './bootstrap'; importer '../css/app.css'; importer { createApp, h } depuis 'vue' ; importer { createInertiaApp } depuis '@inertiajs/vue3' ; importer { solvePageComponent } depuis 'laravel-vite-plugin/inertia-helpers' ; importer { ZiggyVue } depuis '../../vendor/tightenco/ziggy/dist/vue.m' ; const appName = window.document.getElementsByTagName('title')[0]?.innerText || « Laravel » ; créerInertiaApp({ titre : (titre) => `${title} - ${appName}`, résoudre : (nom) => solvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')), setup({ élément, application, accessoires, plugin }) { return createApp({ render: () => h(App, props) }) .use(plug-in) .use(ZiggyVue, Ziggy) .mount(el); }, progrès: { couleur : '#4B5563', }, }); 

这是我的app.blade.php

     {{ config('app.name', 'Laravel') }}    @routes @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @inertiaHead ≪/tête>  @inertie  

Ceci est dans le fichier de stockage/journal[2023-02-08 16:39:49] local.ERROR : SQLSTATE[23000] : violation de contrainte d'intégrité : 1048 La colonne 'menus_id' ne peut pas être nulle (SQL : Insérer dans carts (menus_id, table, updated_at, ;created_at ;) value(?, ?, 08/02/2023 16:39:49, 08/02/2023 16:39:49)) {"Exception": [Objet] (Illuminate\Database\QueryException (code : 23000 ) : SQLSTATE[ 23000] : violation de contrainte d'intégrité : 1048 La colonne 'menus_id' ne peut pas être nulle (SQL : INSÉRER dans carts (menus_id, < /code>table< ;code>, updated_at, created_at) valeur (?, ?, 08/02/2023 16:39:49, 08/02/2023 16:39 :49)) dans D:\Trinity\7th SEM\Project Work\smart_QR_based_restaurant\Suppliers\laravel\Framework\src\Illuminate\Database\Connection.php:760) [stacktrace]

P粉951914381
P粉951914381

répondre à tous (1)
P粉373596828

C'est peut-être votre problème,

Vous transmettez cet objet en tant que données de publication

{menu_id: item.id}

Ensuite vous appelez une entrée dans le contrôleur qui n'existe pas$request->input('id')

$menu_id = $request->input('id'); $menu = Menu::find($menu_id);

devrait être$request->input('menu_id');

Cependant, vérifiez à nouveau vos journaux pour voir l'erreur réelle générée

Vous devez également ajouter une validation dans votre contrôleur pour vous assurer que l'ID que vous transmettez existe dans le tableau

public function store(Request $request) { $request->validate([ 'menu_id' => 'required|exists:menus,id' ]); $menu_id = $request->input('menu_id'); $menu = Menu::find($menu_id); $cart=new Cart(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); }
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!