اذهب إلى المحتوى

السؤال

نشر

أحاول تضمين inertia في مشروع لارافيل ولكن بعد إضافة @inertia< ضمن الصفحة blade يظهر خطأ ولاتقوم الصفحة بالتحميل. قمت بتحميل inertia عن طريق هذا الأمر:

composer require inertiajs/inertia-laravel

والصفحة هي:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>
    <link rel="icon" type="image/jpg" href="{{asset("/image/logo2.png")}}">
    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>

@inertia

</body>
</html>

والمتحكم الخاص بها:

public function showLoginForm()
    {
        return Inertia::render('Auth/Login');
    }

ما المشكلة؟

Recommended Posts

  • 0
نشر

إن @inertia تعمل ولكن لا يستطيع لارافيل تحميلها ضمن الصفحة لأنه يجب عليك تحميل adapter الخاص بها. عن طريق:

npm install @inertiajs/inertia @inertiajs/inertia-vue

ثم يجب إعداد webpack ضمن المشروع على الشكل التالي (webpack.mix.js):

const mix = require('laravel-mix')
const path = require('path')

mix.js('resources/js/app.js', 'public/js')
  .webpackConfig({
    output: { chunkFilename: 'js/[name].js?id=[chunkhash]' },
    resolve: {
      alias: {
        vue$: 'vue/dist/vue.runtime.esm.js',
        '@': path.resolve('resources/js'),
      },
    },
  })

وأيضاً تهيئة Vue ضمن الملف الرئيسي (resources/js/app.js) .

بحيث يتم إضافة InertiaApp من المكتبة inertia-vue في رأس الصفحة:

import { InertiaApp } from '@inertiajs/inertia-vue'
import Vue from 'vue'

Vue.use(InertiaApp)

const app = document.getElementById('app')

const pages = {
  'Auth/Login': require('./Pages/Auth/Login.vue').default,
}

new Vue({
  render: h => h(InertiaApp, {
    props: {
      initialPage: JSON.parse(app.dataset.page),
      resolveComponent: name => pages[name],
    },
  }),
}).$mount(app)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...