/** * Returns data and options prepared to validate and marshall. * * @param array $data The data to prepare. * @param array $options The options passed to this marshaller. * @return array An array containing prepared data and options. */ protected function _prepareDataAndOptions($data, $options) { $options += ['validate' => true]; $tableName = $this->_table->alias(); if (isset($data[$tableName])) { $data = $data[$tableName]; } $data = new \ArrayObject($data); $options = new \ArrayObject($options); $this->_table->dispatchEvent('Model.beforeMarshal', compact('data', 'options')); return [(array) $data, (array) $options]; }
/** * Validates the $entity if the 'validate' key is not set to false in $options * If not empty it will construct a default validation object or get one with * the name passed in the key * * @param \Cake\ORM\Entity $entity The entity to validate * @param \ArrayObject $options The option for processing validation * @return bool true if the entity is valid, false otherwise */ protected function _processValidation($entity, $options) { $type = is_string($options['validate']) ? $options['validate'] : 'default'; $validator = $this->_table->validator($type); $pass = compact('entity', 'options', 'validator'); $event = $this->_table->dispatchEvent('Model.beforeValidate', $pass); if ($event->isStopped()) { return (bool) $event->result; } if (!count($validator)) { return true; } $success = !$entity->validate($validator); $event = $this->_table->dispatchEvent('Model.afterValidate', $pass); if ($event->isStopped()) { $success = (bool) $event->result; } return $success; }
/** * {@inheritDoc} */ public function dispatchEvent($name, $data = null, $subject = null) { $data['table'] = $this; return parent::dispatchEvent($name, $data, $subject); }