ResolveField.php 857 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace Dcat\Admin\Form;
  3. trait ResolveField
  4. {
  5. protected $resolvingFieldCallbacks = [];
  6. /**
  7. * @example $form->resolvingField(function ($field, $form) {
  8. * ...
  9. * });
  10. *
  11. * @param \Closure $callback
  12. * @return $this
  13. */
  14. public function resolvingField(\Closure $callback)
  15. {
  16. $this->resolvingFieldCallbacks[] = $callback;
  17. return $this;
  18. }
  19. public function setResolvingFieldCallbacks(array $callbacks)
  20. {
  21. $this->resolvingFieldCallbacks = $callbacks;
  22. }
  23. /**
  24. * @param Field $field
  25. * @return void
  26. */
  27. protected function callResolvingFieldCallbacks(Field $field)
  28. {
  29. foreach ($this->resolvingFieldCallbacks as $callback) {
  30. if ($callback($field, $this) === false) {
  31. break;
  32. }
  33. }
  34. }
  35. }