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

  1. 时区问题(默认时区UTC-协调世界时)
    时区.png
    **解决办法:**把config/app.php中的'timezone' => 'UTC'修改为'timezone' => 'PRC' 或者 'timezone' => 'Asia/Shanghai'即可
  2. 设置中文语言包

        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))问题
    在app\Providers\AppServiceProvider.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地址

       安装
       // 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 14, 2020
如果觉得我的文章对你有用,请随意赞赏