CityPicker.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Admin\Extensions\Field;
  3. use Encore\Admin\Form\Field;
  4. class CityPicker extends Field
  5. {
  6. protected $view = 'admin.field.sync_file';
  7. protected static $css = [
  8. '/vendor/laravel-admin/bootstrap-fileinput/css/fileinput.min.css',
  9. '/vendor/laravel-admin/bootstrap-fileinput/themes/explorer/theme.min.css',
  10. ];
  11. protected static $js = [
  12. '/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.min.js',
  13. '/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.min.js',
  14. '/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.min.js',
  15. '/vendor/laravel-admin/bootstrap-fileinput/js/fileinput.min.js',
  16. '/vendor/laravel-admin/bootstrap-fileinput/js/locales/zh.js',
  17. '/vendor/laravel-admin/bootstrap-fileinput/themes/explorer/theme.min.js',
  18. ];
  19. public function placeholder($placeholder = '')
  20. {
  21. if (!empty($placeholder)) {
  22. $this->options(['initialCaption' => $placeholder]);
  23. }
  24. return $this;
  25. }
  26. /**
  27. * Set default options form image field.
  28. *
  29. * @return void
  30. */
  31. protected function setupDefaultOptions()
  32. {
  33. $defaultOptions = [
  34. 'language' => 'zh',
  35. // 'theme' => 'explorer',
  36. 'uploadUrl' => route('api.fileinput'),
  37. 'initialPreviewAsData' => true,
  38. // 'initialPreviewAsData' => true,
  39. // 'browseLabel' => trans('admin.browse'),
  40. // 'showRemove' => false,
  41. // 'showUpload' => false,
  42. // 'dropZoneEnabled' => false, //dropzone disabled by default for backward compatibility
  43. //// 'initialCaption' => $this->initialCaption($this->value),
  44. // 'deleteExtraData' => [
  45. // $this->formatName($this->column) => static::FILE_DELETE_FLAG,
  46. // static::FILE_DELETE_FLAG => '',
  47. // '_token' => csrf_token(),
  48. // '_method' => 'PUT',
  49. // ],
  50. ];
  51. $this->options($defaultOptions);
  52. }
  53. /**
  54. * Render file upload field.
  55. *
  56. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  57. */
  58. public function render()
  59. {
  60. $this->options([]);
  61. $this->setupDefaultOptions();
  62. $options = json_encode($this->options);
  63. $this->script = <<<EOT
  64. $("input{$this->getElementClassSelector()}").fileinput({$options});
  65. EOT;
  66. return parent::render();
  67. }
  68. }