Html.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Dcat\Admin\Form\Field;
  3. use Dcat\Admin\Form\Field;
  4. use Dcat\Admin\Support\Helper;
  5. use Illuminate\Support\Arr;
  6. class Html extends Field
  7. {
  8. /**
  9. * Htmlable.
  10. *
  11. * @var string|\Closure
  12. */
  13. protected $html = '';
  14. /**
  15. * @var string
  16. */
  17. protected $label = '';
  18. /**
  19. * @var bool
  20. */
  21. protected $plain = false;
  22. /**
  23. * Create a new Html instance.
  24. *
  25. * @param mixed $html
  26. * @param array $arguments
  27. */
  28. public function __construct($html, $arguments)
  29. {
  30. $this->html = $html;
  31. $this->label = Arr::get($arguments, 0);
  32. }
  33. /**
  34. * @return $this
  35. */
  36. public function plain()
  37. {
  38. $this->plain = true;
  39. return $this;
  40. }
  41. /**
  42. * Render html field.
  43. *
  44. * @return string
  45. */
  46. public function render()
  47. {
  48. if ($this->html instanceof \Closure) {
  49. $this->html = Helper::render(
  50. $this->html->call($this->values(), $this->form)
  51. );
  52. }
  53. if ($this->plain) {
  54. return $this->html;
  55. }
  56. $viewClass = $this->getViewElementClasses();
  57. return <<<EOT
  58. <div class="form-group row">
  59. <label class="{$viewClass['label']} control-label">{$this->label}</label>
  60. <div class="{$viewClass['field']}">
  61. {$this->html}
  62. </div>
  63. </div>
  64. EOT;
  65. }
  66. }