Hallo zusammen,
in Contao 4.4.X konnte ich mit folgendem Workaround die Form Componente von Symfony innerhalb Contao verwenden:
PHP-Code:
/**
* @param string $name
*
* @return FormBuilderInterface
*/
protected function createFormBuilderForContao(string $name): FormBuilderInterface
{
return $this->get('form.factory')->createNamedBuilder($name, FormType::class)
->add('REQUEST_TOKEN', RequestTokenType::class);
}
Darüber hole ich mir in meinem Controller quasi den FormBuilder. Der RequestTokenType liefert mir quasi den Contao Request Token. Der Type sieht wie folgt aus:
PHP-Code:
class RequestTokenType extends HiddenType
{
/**
* @var CsrfTokenManagerInterface
*/
private $tokenManager;
/**
* @var string
*/
private $tokenName;
/**
* RequestTokenType constructor.
*
* @param CsrfTokenManagerInterface $tokenManager
* @param string $tokenName
*/
public function __construct(CsrfTokenManagerInterface $tokenManager, string $tokenName)
{
$this->tokenManager = $tokenManager;
$this->tokenName = $tokenName;
}
/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
parent::buildView($view, $form, $options);
$view->vars['full_name'] = 'REQUEST_TOKEN';
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data' => $this->tokenManager->getToken($this->tokenName)->getValue(),
]);
}
/**
* @return string
*/
public function getName()
{
return 'request_token';
}
}
Das hatte bisher auch immer gut geklappt. Jetzt will ich unter Contao 4.7 die gleiche Vorgehensweise machen, erhalte aber beim Absenden des Formulares dann die Meldung
Code:
Invalid CSRF token. Please reload the page and try again.
Was hat sich bei Contao/Symfony verändert - hat mir da jemand einen Tip? Stehe grad auf dem Schlauch
Danke euch !
Lesezeichen