| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace ModulesGarden\Servers\ZimbraEmail\Core\UI\Traits;
- use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\Forms\Fields\BaseField;
- use ModulesGarden\Servers\ZimbraEmail\Core\UI\Helpers\ContainerElementsConstants;
- /**
- * Fields Elements related functions
- *
- * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
- */
- trait Fields
- {
- /**
- * Fields List
- * @var Array
- */
- protected $fields = [];
-
- /**
- * List of validation errors
- * @var Array
- */
- protected $validationErrors = [];
- /**
- * Adds field object to field list
- * @return $this
- */
- public function addField(BaseField $field)
- {
- $this->initFieldsContainer();
- $this->addElement($field, ContainerElementsConstants::FIELDS);
- return $this;
- }
- protected function initFieldsContainer()
- {
- if(!$this->elementContainerExists(ContainerElementsConstants::FIELDS))
- {
- $this->addNewElementsContainer(ContainerElementsConstants::FIELDS);
- }
- }
- /**
- * Returns Field object by field id
- * @return Field object
- */
- public function getField($fieldId)
- {
- return $this->fields[$fieldId];
- }
- /**
- * Returns Field objects array
- * @return array
- */
- public function getFields()
- {
- return $this->fields;
- }
-
- /**
- * Validates data provided to form by valiators in each field
- * @return array
- */
- public function validateFields($request)
- {
- foreach ($this->fields as $field)
- {
- $formData = $request->get('formData', []);
- $value = $this->convertStringToValue($field->getName(), $formData);
- if ($field->isValueValid($value, $request))
- {
- continue;
- }
- $this->validationErrors[$field->getName()] = $field->getValidationErrors();
- }
- return $this;
- }
-
- protected function convertStringToValue($name, $formData)
- {
- $nameArray = explode('[', str_replace(']', '', $name));
- return dot($formData)->get(implode('.', $nameArray), null);
- }
- public function getValidationErrors()
- {
- return $this->validationErrors;
- }
-
- /**
- * Removes field object from the fields list
- * @return $this
- */
- public function removeField($fieldId = null)
- {
- if ($fieldId && $this->fields[$fieldId])
- {
- unset($this->fields[$fieldId]);
- }
- return $this;
- }
- }
|