vue.jsからlaravel 9にデータを渡す
P粉951914381
P粉951914381 2023-08-31 16:37:26
0
1
558
<p>問題: axios</p> を使用して vue.js から laravel にデータを渡すときに内部サーバー エラーが発生します。 <p>新しいlaravelプロジェクトを作成し、vueを使用してbreeceをインストールしました(phpArtisan Breeze:vueのインストール)。次に、メニュー コントローラーを作成し、次のように menu.vue をレンダリングしました。 <pre class="brush:php;toolbar:false;">パブリック関数 Index() { $menuItems = メニュー::all(); return Inertia::render('メニュー', [ 'menuItems' => $menuItems ]); }</pre> <p><code>Route::get('menu',[MenuController::class,'index']); </code> CartController</p> を作成しました。 <pre class="brush:php;toolbar:false;"><?php 名前空間 App\Http\Controllers; App\Models\Cart を使用します。 App\Models\Menu を使用します。 Illuminate\Http\Request を使用します。 クラス CartController はコントローラーを拡張します { パブリック関数ストア(リクエスト $request) { dd("コントローラー"); $menu_id = $request->input('id'); $menu = メニュー::find($menu_id); $cart=新しいカート(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); } }</pre> <p>ここでは、menu.vue から返されたデータを保存する必要があります。 menu.vue</p> <pre class="brush:php;toolbar:false;"><スクリプトのセットアップ> import { Head } から '@inertiajs/vue3'; </スクリプト> <テンプレート> <head title="メニュー" /> <ナビゲーションバー />
<div v-for="menuItems の項目" :key="item.id"> <div class="p-6 bg-whiterounded-lgshadow-lg"> <画像 v-bind:src="'menuItemImage/' item.image" クラス= "w-12 h-12" /> <h3 class="text-lg font-medium leading-tight"> {{ 項目名 }} </h3> <ボタン @click="addToCart(item)" class="mt-4 bg-blue-500 text-white py-2 px-4rounded-lg hover:bg-blue-600" > 追加 </ボタン> </div> </div> </div> </テンプレート> <スクリプト> 「@/Layouts/NavbarLayout.vue」からナビゲーションバーをインポートします; "axios" から axios をインポートします。 デフォルトのエクスポート { 名前: 「メニュー」、 データ() { 戻る {}; }、 コンポーネント: { ナビゲーションバー、 }、 小道具: ["menuItems"]、 メソッド: { addToCart(item) { console.log(アイテム.id); アクシオス .post("/カート", { menu_id: item.id、 }) .then(関数 (応答) { コンソール.ログ(応答.データ); }) .catch(関数 (エラー) { コンソール.ログ(エラー); }); }、 }、 }; </script></pre> <p>問題は、これがいつ呼び出されるかです</p> <pre class="brush:php;toolbar:false;">axios .post("/カート", { menu_id: item.id、 })</pre> <p>このエラーが発生しました: エラー</p> <p>これは私の app.js です</p> <pre class="brush:php;toolbar:false;">axios インポート './ブートストラップ'; インポート '../css/app.css'; import { createApp, h } から 'vue'; import { createInertiaApp } から '@inertiajs/vue3'; import { replacePageComponent } から 'laravel-vite-plugin/inertia-helpers'; import { ZiggyVue } から '../../vendor/tightenco/ziggy/dist/vue.m'; const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel'; createInertiaApp({ title: (title) => `${title} - ${appName}`, solve: (name) =>solvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')), setup({ エル、アプリ、小道具、プラグイン }) { return createApp({ render: () => h(App, props) }) .use(プラグイン) .use(ZiggyVue、ジギー) .mount(el); }、 進捗: { 色: '#4B5563'、 }、 });</pre> <p>これは私の app.blade.php</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"" <頭> <meta charset="utf-8"> <メタ名="ビューポート"コンテンツ="幅=デバイス幅、初期スケール=1"" <タイトルの慣性>{{ config('app.name', 'Laravel') }}</title> <!-- フォント --> <link rel="stylesheet" href="https://fonts.bunny.net/css2?family=Nunito:wght@400;600;700&display=swap"> <!-- スクリプト --> @ルート @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @慣性ヘッド </head> <body class="font-sans antialiased"> @慣性 </ボディ> </html></pre> <p>これはストレージ/ログ ファイルにあります<code>[2023-02-08 16:39:49] local.ERROR: SQLSTATE[23000]: 整合性制約違反: 1048 列 'menus_id' を null にすることはできません (SQL: </code>カートに挿入<code> (</code>menus_id<code>、</code>table<code>、</code>updated_at<code>、</code> ;created_at<code> ;) value(?, ?, 2023-02-08 16:39:49, 2023-02-08 16:39:49)) {"例外":"[オブジェクト] (Illuminate\\Database\ \QueryException(Code : 23000): SQLSTATE[ 23000]: 整合性制約違反: 1048 列 'menus_id' を null にすることはできません (SQL: </code>カート<code> に INSERT (</code>menus_id<code>, </code> ;table<code>, </code >updated_at<code>, </code>created_at<code>) value(?, ?, 2023-02-08 16:39:49, 2023-02-08 16 :39:49)) D:\Trinity\7th SEM\Project Work\smart_QR_based_restaurant\\Supplier\\laravel\\Framework\\src\\Illuminate\\Database\\ Connection.php:760) [スタックトレース] < /コード> </p>
P粉951914381
P粉951914381

全員に返信(1)
P粉373596828

これはあなたの問題かもしれません、

このオブジェクトを投稿データとして渡します

リーリー

次に、存在しないコントローラーの入力を呼び出します$request->input('id')

リーリー

$request->input('menu_id');

である必要があります。

ただし、ログを再度チェックして、実際に発生したエラーを確認してください。

さらに、コントローラーに検証を追加して、渡した ID がテーブルに存在することを確認する必要があります

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート