/** * Приём анкеты Сити банка */ public function executeCitiCashBackApplication(sfRequest $request) { $form = new CitiBankApplicationForm(); $form->bind($request->getPostParameters()); if ($form->isValid()) { $this->_sendEmail($form->getValues()); return $this->renderJsonSuccess('Анкета успешно отправлена'); } $errors = $form->getErrorSchema()->getErrors(); $errorMessages = array(); //TODO: refactor: все сообщения русским языком должны создаваться на клиенте, //сервер должен слать только код поля (например, "email") и сообщение валидатора $humanFieldNames = array("email" => "Email", "birthday" => "Дата рождения", "name" => "Имя", "patronymic" => "Отчество", "surname" => "Фамилия", "mobile_phone" => "Мобильный телефон"); foreach ($errors as $fieldName => $error) { $errorMessages[] = sprintf("%s", $humanFieldNames[$fieldName]); } return $this->renderJsonError("Пожалуйста, исправьте заполнение полей: \n" . implode(', ', $errorMessages)); }
/** * Сохранить профиль пользователя */ public function executeSave(sfRequest $request) { $user = $this->getUser()->getUserRecord(); $this->form = new UserProfileForm($user); $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8'); $postParameters = $request->getPostParameters(); $formParameters = array(); // default fields $fields = array('mailIntegration' => 'user_service_mail', 'nickname' => 'name'); // грязный хак для (от) Рамблёра if (strpos($_SERVER['HTTP_HOST'], 'rambler') === false) { $fields = array_merge(array('login' => 'user_login', 'mail' => 'user_mail', 'pass' => 'password', 'newpass' => 'password_new', 'getNotify' => 'notify'), $fields); } foreach ($fields as $parameter => $field) { if (array_key_exists($parameter, $postParameters)) { $formParameters[$field] = $postParameters[$parameter]; } } $this->form->bind($formParameters, array()); if ($this->form->isValid()) { $this->form->save(); return $this->renderText(json_encode(array('result' => array('text' => 'Данные успешно сохранены')))); } $err = $this->form->getErrorSchema(); $string = ''; foreach ($err as $errors) { if ($errors instanceof sfValidatorErrorSchema) { foreach ($errors as $code => $message) { $string .= $message->getMessage() . "<br /><br />\n"; } } elseif ($errors instanceof sfValidatorError) { $string .= $errors->getMessage() . "<br /><br />\n"; } else { $string .= $errors . "<br /><br />\n"; } } return $this->renderText(json_encode(array('error' => array('text' => $string)))); }
/** * Авторизация пользователя */ public function executeLogin(sfRequest $request) { $this->setLayout("layout"); $user = $this->getUser(); if ($user->isAuthenticated()) { return $this->redirect('@homepage'); } // Запрос на авторизацию if ($request->isMethod('post')) { $this->form = new myAuthForm(); $params = $request->getPostParameters(); $this->form->bind($params['auth']); if ($this->form->isValid()) { $values = $this->form->getValues(); $remember = array_key_exists('remember', $values) ? $values['remember'] : false; $user->signIn($this->form->getUser(), $remember); return $this->redirect('@homepage'); } // Форвард из других контроллеров } else { $this->form = new myAuthForm(); } return sfView::SUCCESS; }
/** * Авторизация пользователя / сообщение о неавторизованности */ public function executeLogin(sfRequest $request) { $this->setLayout("layout"); $user = $this->getUser(); if (!$user->isAuthenticated()) { if ($request->isMethod('post')) { $form = new myAuthForm(); $form->bind($request->getPostParameters()); if ($form->isValid()) { $userRecord = $form->getUser(); } else { return $this->raiseError($form->getErrorSchema()); } } else { return $this->raiseError('Authentification required'); } $user->signIn($userRecord); } if (!$this->checkSubscription()) { $user->signOut(); return $this->raiseError('Payment required', 402); } return sfView::SUCCESS; }