如何在Laravel中自定义vue-filemanager前端?

我正在使用https://github.com/alexusmai/laravel-file-manager包,它带有预编译的 js 文件,或者您可以直接通过https://github.com/ 的npm 使用 vue 组件alexusmai/vue-laravel-file-manager。

但是,在这两种变体中,前端都是不可修改的。我在我的应用程序中使用 Laravel 文件管理器,我想对 vue 文件进行自定义以更改前端。

到目前为止我尝试过的:

  • 将https://github.com/alexusmai/vue-laravel-file-manager/tree/master/src 的内容复制到/resources/assets/js/file-manager

然后我创建了一个file_manager.js这样的:

import Vue from 'vue';
import Vuex from 'vuex';
import FileManager from './file-manager/FileManager.vue';

Vue.use(Vuex);

// create Vuex store, if you don't have it
const store = new Vuex.Store();

Vue.use(FileManager, {store});


Vue.component('file-manager', FileManager);


const app = new Vue({
    store
    el: '#app'
});

在我的 webpack.mix.js 文件中,我添加了这一行:

.js('resources/assets/js/file-manager.js', 'public/js')

现在npm run dev可以使用,但是如果我打开包含此内容的页面:

<div>
    <div>
        <file-manager></file-manager>
    </div>
</div>
<script src="{{ asset('js/file-manager.js') }}"></script>

我收到此错误:

[vuex] 未知突变类型:fm/settings/manualSettings [vuex] 未知突变类型:fm/settings/initAxiosSettings [vuex] 未知动作类型:fm/initializeApp

为什么会发生?我需要以不同的方式包含它吗?

回答

您需要导入并注册商店模块:

import Vue from 'vue';
import Vuex from 'vuex';
import FileManager from './file-manager/FileManager.vue';
import fm from './file-manager/store';  // Import modules

Vue.use(Vuex);

// create Vuex store, if you don't have it
const store = new Vuex.Store({modules: {fm}});  // Register modules

Vue.use(FileManager, {store});

Vue.component('file-manager', FileManager);

const app = new Vue({
    store,
    el: '#app'
});

解释

file-manager组件期望在全局存储中存在一系列操作和突变。在典型用法中,例如通过npm模块,在此入口点文件中定义的这些操作和更改在此处的商店中注册,如自述文件中所述。由于您尝试手动注册file-manager组件而不是由入口点文件注册,因此您还需要显式注册模块。

是的,作为替代解决方案,您可以改为从入口点文件init.js导入并将其用作插件,以便它隐式注册模块和组件:

import Vue from 'vue';
import Vuex from 'vuex';
import FileManager from './file-manager/init';  // Note 'init'

Vue.use(Vuex);

// create Vuex store, if you don't have it
const store = new Vuex.Store();

Vue.use(FileManager, {store});  // Registers the file-manager component too

const app = new Vue({
    store,
    el: '#app'
});


以上是如何在Laravel中自定义vue-filemanager前端?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>