コード例 #1
0
 /**
  *
  */
 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;
 }
コード例 #2
0
 /**
  * Подмешивает дополнительные поля и значения:
  *     знак у суммы и прочая требуха
  * @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;
     }
 }
コード例 #3
0
 protected function doBind(array $values)
 {
     parent::doBind($values);
 }
コード例 #4
0
 /**
  * Подмешать во входящие параметры поля, которые сможет использовать 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);
 }
コード例 #5
0
 protected function doBind(array $values)
 {
     $values = $this->filterValuesByEmbeddedMediaForm($values, 'image_id');
     $values = $this->filterValuesByEmbeddedMediaForm($values, 'file_id');
     parent::doBind($values);
 }