/** * */ protected function doBind(array $values) { $values['id'] = $this->getObject()->getId(); // это поле всегда лишнее if (array_key_exists('password_repeat', $values)) { unset($values['password_repeat']); } // эту х-ню делать в модели if (isset($values['user_service_mail']) && !empty($values['user_service_mail'])) { $values['user_service_mail'] = $values['user_service_mail'] . '@mail.easyfinance.ru'; } parent::doBind($values); // не обновлять e-mail если идентичен или когда не введен пароль if (isset($this->values['user_mail']) && !empty($this->values['user_mail']) && $this->getObject()->getUserMail() != $this->values['user_mail']) { if (!isset($this->values['password']) || empty($this->values['password'])) { unset($this->values['user_mail'], $this['user_mail'], $this->values['password']); } } // обновить пароль, если задан новый (и не пустой) и старый if (isset($this->values['password']) && !empty($this->values['password']) && isset($this->values['password_new']) && !empty($this->values['password_new'])) { $this->values['password'] = $this->values['password_new']; unset($this->values['password_new'], $this['password_new']); // не трогать пароль без необходимости } else { unset($this->values['password'], $this->values['password_new'], $this['password'], $this['password_new']); } return $values; }
/** * Подмешивает дополнительные поля и значения: * знак у суммы и прочая требуха * @see sfForm */ protected function doBind(array $values) { // не используем поля в зависимости от типа операции switch ($values['type']) { case Operation::TYPE_BALANCE: unset($this['date'], $this['transfer_account_id'], $this['transfer_amount']); $values['accepted'] = true; if (!empty($values['id'])) { $validator = new sfValidatorDoctrineUnique(array('model' => 'Operation', 'column' => array('account_id', 'type')), array('invalid' => sprintf('Duplicate balance operations for account %s', $values['account_id']))); $validator->clean($values); } break; case Operation::TYPE_TRANSFER: unset($this['category_id']); break; default: unset($this['transfer_account_id'], $this['transfer_amount']); break; } // в зависимости от подтвержденности операции отключаем необходимости полей if (!$values['accepted']) { $this->setDraftValidation(); } parent::doBind($values); switch ($this->values['type']) { case Operation::TYPE_TRANSFER: $this->values['amount'] = -abs($this->values['amount']); $this->values['transfer_amount'] = abs($this->values['transfer_amount']); break; case Operation::TYPE_EXPENSE: $this->values['amount'] = -abs($this->values['amount']); break; case Operation::TYPE_BALANCE: $this->values['comment'] = "Начальный остаток"; break; default: $this->values['amount'] = abs($this->values['amount']); break; } }
protected function doBind(array $values) { parent::doBind($values); }
/** * Подмешать во входящие параметры поля, которые сможет использовать PostValidator * для проверки уникальности ID-операции AMT */ protected function doBind(array $values) { $values['source_uid'] = Operation::SOURCE_AMT; $values['source_operation_uid'] = isset($values['id']) ? $values['id'] : ''; parent::doBind($values); }
protected function doBind(array $values) { $values = $this->filterValuesByEmbeddedMediaForm($values, 'image_id'); $values = $this->filterValuesByEmbeddedMediaForm($values, 'file_id'); parent::doBind($values); }