关于Laravel 5.8.*(laravel-admin 1.x)的一些问题以及解决办法汇总

2022-09-11 14:26:44 浏览数 (1)

关于Laravel 5.8.*(laravel-admin 1.x)的一些问题以及解决办法汇总

时区问题(默认时区UTC-协调世界时)

**解决办法:**把config/app.php中的'timezone' => 'UTC'修改为'timezone' => 'PRC'或者'timezone' => 'Asia/Shanghai'即可

设置中文语言包

  • 安装依赖(其它laravel版本请查看文档下载对应版本)
代码语言:javascript复制
    composer require laravel-lang/lang:~4.0
  • 复制vendor/laravel-lang/lang/src/zh-CN到resources/lang/zh-CN
  • 把config/app.php中的'locale' => 'en'修改为'locale' => 'zh-CN'
  • 如果你要用faker去填充测试数据,请修改'locale' => 'en'修改为'locale' => 'zh_CN' (vendor/fzaninotto/faker/src/Faker/Provider/zh_CN)

出现SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter tableusersadd uniqueusers_email_unique(email))问题 在appProvidersAppServiceProvider.php添加默认值

代码语言:javascript复制
   <?php
        namespace AppProviders;
        
        use IlluminateSupportServiceProvider;
        use IlluminateSupportFacadesSchema; //add fixed sql
        
        class AppServiceProvider extends ServiceProvider
        {
            /**
             * Bootstrap any application services.
             *
             * @return void
             */
            public function boot()
            {
                Schema::defaultStringLength(191); //add fixed sql
            }
        
            /**
             * Register any application services.
             *
             * @return void
             */
            public function register()
            {
                //
            }
    }

laravel-admin 表单 $form->image('pic', __('Pic'));上传图片路径问题。 在config/admin.php上传配置项中

代码语言:javascript复制
'upload' => [
  
          //配置项 config/filesystem.php
          'disk' => 'admin',
  
          //上传图片和文件的目录设置
          'directory' => [
              'image' => 'images',
              'file'  => 'files',
          ],
      ],

可以看出来配置项在config/filesystem.php中 在config/filesystems.php中追加如下

代码语言:javascript复制
     'disks' => [     
           ...
            'admin' => [
                'driver' => 'local',
                'root' => storage_path('app/public'),//上传路径(图片上传到/storage/app/public/images;文件上传到/storage/app/public/files)
                'url' => env('APP_URL').'/storage',//访问路径(图片访问路径/public/storage/images;文件访问路径/public/storage/file)
                'visibility' => 'public',
            ],
            ...
        ],

我们需要执行一下软连接php artisan storage:link, 这个命令会帮我们把/storage/app/public/*映射到/public/storage/*, 这样我们就可以直接通过根目录下的storage/* 访问文件。

在laravel-admin 中使用$form->editor('content',__('Content')); 报错(laravel-admin Field type [editor] does not exist.)问题。 首先把app/admin中的bootstrap.php 里边的EncoreAdminForm::forget(['map', 'editor']);注释掉,意思就是使用这个组件。 如果依然报错,则可能需要安装laravel-admin-ext/wang-editor,github地址

代码语言:javascript复制
  安装
   // laravel-admin 1.x
   composer require "laravel-admin-ext/wang-editor:1.*"
   
   // laravel-admin 2.x
   composer require laravel-admin-ext/wang-editor
   然后
   
   php artisan vendor:publish --tag=laravel-admin-wangEditor
   配置
   在config/admin.php文件的extensions,加上属于这个扩展的一些配置
   
       'extensions' => [
   
           'wang-editor' => [
           
               // 如果要关掉这个扩展,设置为false
               'enable' => true,
               
               // 编辑器的配置
               'config' => [
                   
               ]
           ]
       ]
   编辑器的配置可以到wangEditor文档找到,比如配置上传图片的地址上传图片
   
       'config' => [
           // `/upload`接口用来上传文件,上传逻辑要自己实现,可参考下面的`上传图片`
           'uploadImgServer' => '/upload'
       ]
   使用
   在form表单中使用它:
   
   $form->editor('content');
   上传图片
   图片上传默认使用base64格式化后与文本内容一起存入数据库,如果要上传图片到本地接口,那么下面是这个接口对应的action代码示例:
   
   use IlluminateHttpRequest;
   use IlluminateSupportFacadesStorage;
   
   public function upload(Request $request)
   {
       $urls = [];
   
       foreach ($request->file() as $file) {
           $urls[] = Storage::url($file->store('images'));
       }
   
       return [
           "errno" => 0,
           "data"  => $urls,
       ];
   }

0 人点赞