FormDataProvider.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\UI\Traits;
  3. use \ThurData\Servers\KerioEmail\Core\UI\Interfaces\FormDataProviderInterface;
  4. use \ThurData\Servers\KerioEmail\Core\Helper;
  5. /**
  6. * Form DataProvider related functions
  7. *
  8. * @autor ThurData <info@thurdata.ch>
  9. */
  10. trait FormDataProvider
  11. {
  12. /**
  13. * Providing save and load data functionalities for Forms
  14. * @var \ThurData\Servers\KerioEmail\Core\UI\Interfaces\FormDataProviderInterface
  15. */
  16. protected $dataProvider = null;
  17. protected $providerClass = '';
  18. public function loadProvider()
  19. {
  20. if ($this->providerClass != '' && !is_object($this->dataProvider))
  21. {
  22. $this->setProvider(Helper\di($this->providerClass));
  23. }
  24. return $this;
  25. }
  26. /**
  27. * Sets data provider for Form
  28. * @return $this
  29. */
  30. public function setProvider(FormDataProviderInterface $provider)
  31. {
  32. $this->dataProvider = $provider;
  33. if (method_exists($this, 'getFormType'))
  34. {
  35. $this->dataProvider->setParentFormType($this->getFormType());
  36. }
  37. return $this;
  38. }
  39. public function getFormData()
  40. {
  41. if($this->dataProvider === null)
  42. {
  43. $this->loadProvider();
  44. }
  45. return $this->dataProvider->getData();
  46. }
  47. }