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

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

    ` **解决办法:**`把config/app.php中的`'timezone' => 'UTC'`修改为`'timezone' => 'PRC'` 或者 `'timezone' => 'Asia/Shanghai'`即可 
  2. 设置中文语言包

    • 安装依赖(其它laravel版本请查看文档下载对应版本

      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)
  3. 出现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添加默认值

      <?php
      namespace App\Providers;
      
      use Illuminate\Support\ServiceProvider;
      use Illuminate\Support\Facades\Schema; //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()
          {
              //
          }
      }
  4. laravel-admin 表单 $form->image('pic', __('Pic'));上传图片路径问题。
    config/admin.php上传配置项中

    'upload' => [
    
        //配置项 config/filesystem.php
        'disk' => 'admin',
    
        //上传图片和文件的目录设置
        'directory' => [
            'image' => 'images',
            'file'  => 'files',
        ],
    ],
    可以看出来配置项在`config/filesystem.php`中   
    在`config/filesystems.php`中追加如下
       '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/* `访问文件。
  5. 在laravel-admin 中使用$form->editor('content',__('Content')); 报错(laravel-admin Field type [editor] does not exist.)问题。

    首先把`app/admin`中的`bootstrap.php` 里边的`Encore\Admin\Form::forget(['map', 'editor']);`注释掉,意思就是使用这个组件。
    如果依然报错,则可能需要安装`laravel-admin-ext/wang-editor`,[github地址](https://github.com/laravel-admin-extensions/wangEditor)
     安装
     // 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 Illuminate\Http\Request;
     use Illuminate\Support\Facades\Storage;
     
     public function upload(Request $request)
     {
     $urls = [];
     
     foreach ($request->file() as $file) {
         $urls[] = Storage::url($file->store('images'));
     }
     
     return [
         "errno" => 0,
         "data"  => $urls,
     ];
     }

关注友儿不迷路

Last modification:October 14th, 2020 at 06:36 pm
如果觉得我的文章对你有用,请随意赞赏