コード例 #1
0
ファイル: FormFactory.php プロジェクト: ASDAFF/citfact.form
 /**
  * @return Form
  */
 public function create()
 {
     if (!in_array($this->params->get('TYPE'), array('IBLOCK', 'HLBLOCK', 'CUSTOM'))) {
         $this->params->set('TYPE', 'CUSTOM');
     }
     switch ($this->params->get('TYPE')) {
         case 'IBLOCK':
             $builder = 'Citfact\\Form\\Builder\\IBlockBuilder';
             $storage = 'Citfact\\Form\\Storage\\IBlockStorage';
             $validator = 'Citfact\\Form\\Validator\\IBlockValidator';
             break;
         case 'HLBLOCK':
             $builder = 'Citfact\\Form\\Builder\\UserFieldBuilder';
             $storage = 'Citfact\\Form\\Storage\\HighLoadBlockStorage';
             $validator = 'Citfact\\Form\\Validator\\UserFieldValidator';
             break;
         case 'CUSTOM':
             $builder = $this->params->get('BUILDER') ?: Config\Option::get('citfact.form', 'BUILDER');
             $storage = $this->params->get('STORAGE') ?: Config\Option::get('citfact.form', 'STORAGE');
             $validator = $this->params->get('VALIDATOR') ?: Config\Option::get('citfact.form', 'VALIDATOR');
             break;
     }
     $mailer = new Mailer($this->params, new \CEventType(), new \CEvent());
     $form = new Form($this->params, new $builder(), new $validator(), new $storage());
     $form->setMailer($mailer);
     return $form;
 }
コード例 #2
0
ファイル: component.php プロジェクト: ASDAFF/citfact.form
// Builder saves data to reduce the number of requests
if ($this->startResultCache()) {
    $arResult['BUILDER_DATA'] = $form->createBuilderData()->getBuilderData();
    $this->endResultCache();
}
$form->setBuilderData($arResult['BUILDER_DATA']);
$form->handleRequest($app->getContext()->getRequest());
if ($form->isValid()) {
    $form->save();
    // If the data is successfully preserved produce redirect
    if ($params->get('AJAX') != 'Y') {
        $redirectPath = $params->get('REDIRECT_PATH') ?: getenv('REQUEST_URI');
        LocalRedirect($redirectPath);
    }
}
$result->set('BUILDER', $form->getBuilderData());
$result->set('VIEW', $form->getViewData());
$result->set('SUCCESS', $form->isValid());
$result->set('ERRORS', $form->getErrors(false));
$result->set('CSRF', $form->getCsrfToken());
$result->set('CAPTCHA', $form->getCaptchaToken());
$result->set('FORM_NAME', $form->getFormName());
$result->set('IS_AJAX', getenv('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest');
if ($result->get('IS_AJAX') && $form->isSubmitted()) {
    $GLOBALS['APPLICATION']->restartBuffer();
    header('Content-Type: application/json');
    ob_start();
    $arResult = $result->toArray();
    $this->includeComponentTemplate();
    $bufferTemplate = ob_get_contents();
    ob_clean();