Skip to main content

常见问题汇总

常见问题汇总

覆写内置视图

如果有需要自己修改view,但是不方便直接修改laravel-admin的情况,可以用下面的办法解决

复制vendor/encore/laravel-admin/views到项目的resources/views/admin,然后在app/Admin/bootstrap.php文件中加入代码:

// 覆盖`admin`命名空间下的视图
app('view')->prependNamespace('admin', resource_path('views/admin'));

这样就用resources/views/admin下的视图覆盖了laravel-admin的内置视图。

在laravel-admin每个新版本发布的时候, 内置视图都有可能会变更,所以如果你覆写了laravel-admin的视图,在更新laravel-admin版本的时候, 很有可能会出现视图方面的问题,这个需要你对照修改过的视图文件和内置视图自行修改解决。

设置语言

完成安装之后,默认语言为英文(en),如果要使用中文,打开config/app.php,将locale设置为zh-CN即可。

如果上面修改之后,表单的验证信息还是英文的,那么可以安装Laravel-lang来切换成中文。

关于扩展自定义组件

laravel-admin默认引用了大量前端资源,如果有网络问题或者有不需要使用的组件,可以参考form组件管理将其移除。

关于富文本编辑器,由于静态资源包文件普遍太大,所以laravel-admin默认通过cdn的方式引用ckeditor,建议大家根据自己的需求扩展编辑器,自行配置。

关于前端资源问题

如果需要使用自己的前端文件,可以在app/Admin/bootstrap.php中引入:

Admin::css('path/to/your/css');
Admin::js('path/to/your/js');

重写登录页面和登录逻辑

在路由文件app/Admin/routes.php中,覆盖掉登录页面和登录逻辑的路由,即可实现自定义的功能

Route::group([
'prefix' => config('admin.prefix'),
'namespace' => Admin::controllerNamespace(),
'middleware' => ['web', 'admin'],
], function (Router $router) {

$router->get('auth/login', 'AuthController@getLogin');
$router->post('auth/login', 'AuthController@postLogin');

});

在自定义的路由器AuthController中的getLogin、postLogin方法里分别实现自己的登录页面和登录逻辑。

参考控制器文件AuthController.php,视图文件login.blade.php

更新静态资源

如果遇到更新之后,部分组件不能正常使用,那有可能是laravel-admin自带的静态资源有更新了,需要运行命令php artisan vendor:publish --tag=laravel-admin-assets --force来重新发布前端资源,发布之后不要忘记清理浏览器缓存.

页面乱码问题

在下载或者预览文件的时候,可能会遇到页面内容全部乱码的情况,出现这个问题的原因,是因为Laravel-admin默认使用pjax来加载页面,它会读取要下载或者预览的内容来渲染到当前页面的内容区域。

解决办法是打开新页面来下载或者预览文件:

<a href="http://xxxx" target="_blank">下载文件</a>

a标签上添加target="_blank", 用新页面打开避免使用pjax加载页面。

前后台session冲突

如果网站前台和管理后台在同一个Laravel项目中,并且在一个域名下,登录的时候可能会遇到前后台session冲突的问题,在版本v1.6.10之后修复了这个问题,先更新到v1.6.10以上,然后在config/admin.php的route.middleware上加上一个中间件admin.session即可

    'route' => [
'middleware' => ['web', 'admin', 'admin.session'],
],

如果后台使用子域名作为入口比如admin.example.com, 和www.example.com下的其它项目session冲突,那么可以修改config/session.php里面的cookie为其它名称(默认为laravel_session)。