public function __construct(Request $request, $type = "form", $data = array(), $options = array()) { $this->request = $request; $validator = Validation::createValidatorBuilder(); if (!isset($options["attr"]["name"])) { $options["attr"]["thelia_name"] = $this->getName(); } $builder = Forms::createFormFactoryBuilder()->addExtension(new HttpFoundationExtension()); if (!isset($options["csrf_protection"]) || $options["csrf_protection"] !== false) { $builder->addExtension(new CsrfExtension(new SessionCsrfProvider($request->getSession(), isset($options["secret"]) ? $options["secret"] : ConfigQuery::read("form.secret", md5(__DIR__))))); } $translator = Translator::getInstance(); $validator->setTranslationDomain('validators')->setTranslator($translator); $this->formBuilder = $builder->addExtension(new ValidatorExtension($validator->getValidator()))->getFormFactory()->createNamedBuilder($this->getName(), $type, $data, $this->cleanOptions($options)); $this->buildForm(); // If not already set, define the success_url field // This field is not included in the standard form hidden fields // This field is not included in the hidden fields generated by form_hidden_fields Smarty function if (!$this->formBuilder->has('success_url')) { $this->formBuilder->add("success_url", "hidden"); } // The "error_message" field defines the error message displayed if // the form could not be validated. If it is empty, a standard error message is displayed instead. // This field is not included in the hidden fields generated by form_hidden_fields Smarty function if (!$this->formBuilder->has('error_message')) { $this->formBuilder->add("error_message", "hidden"); } $this->form = $this->formBuilder->getForm(); }