ConfigEmbedsEditForm.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Module\System\Admin\Actions;
  3. use App\Module\System\Models\SysConfig;
  4. use Dcat\Admin\Contracts\LazyRenderable;
  5. use Dcat\Admin\Traits\LazyWidget;
  6. use UCore\DcatAdmin\Widgets\Form;
  7. /**
  8. * 固定键值对 修改表单
  9. *
  10. */
  11. class ConfigEmbedsEditForm extends Form implements LazyRenderable
  12. {
  13. use LazyWidget,ConfigEditForm;
  14. public function form()
  15. {
  16. $id = $this->payload['id'] ?? null;
  17. $model = SysConfig::query()->find($id);
  18. if(!$model){
  19. return $this->error('错误的')->refresh();
  20. }
  21. // dump($model);
  22. $kv = json_decode($model->value,true);
  23. $options = [];
  24. if($model->options){
  25. $options = json_decode($model->options,true);;
  26. }
  27. $this->display('k','Key')->value($model->keyname);
  28. $this->display('k','标题')->value($model->title);
  29. $this->display('k','描述')->value($model->desc);
  30. $this->embeds('value',"内容",function (\Dcat\Admin\Form\EmbeddedForm $form) use($kv,$options){
  31. $nochange = $options['nochange']??[];
  32. foreach ($kv as $k=>$v){
  33. if(substr($k,0,2) =='is'){
  34. if(in_array($k,$nochange)){
  35. $form->switch($k,$k)->default($v)->readOnly();
  36. }else{
  37. $form->switch($k,$k)->default($v);
  38. }
  39. }elseif(is_bool($v)){
  40. if(in_array($k,$nochange)){
  41. $form->switch($k,$k)->default($v)->readOnly();
  42. }else{
  43. $form->switch($k,$k)->default($v);
  44. }
  45. }else{
  46. if(in_array($k,$nochange)){
  47. $form->text($k,$k)->default($v)->readOnly();
  48. }else{
  49. $form->text($k,$k)->default($v);
  50. }
  51. }
  52. }
  53. })->default($kv)
  54. ->required();
  55. }
  56. }