Skip to content

Commit

Permalink
Merge pull request #12 from e-spin/hotfix/fix_formdata_issue_11
Browse files Browse the repository at this point in the history
Fix FORM_DATA
  • Loading branch information
e-spin authored Jan 17, 2025
2 parents 0cd188e + 251f764 commit 6ef1c03
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 17 deletions.
21 changes: 10 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,44 @@
# Contao form-scr-default (EN)

With the extension, standard selections for the form elements selectbox, checkbox and radio
With the extension, standard selections for the form elements select, checkbox and radio
button can be predefined dynamically.

Versions:

- Contao ^5.2: ``^2.0``
- Contao ^5.3: ``^2.0``
- Contao ^4.9: ``^1.0``

The [ProtectedSelect](https://github.com/christianbarkowsky/contao-protectedselect) extension is supported from
version 2.0.2.
The [ProtectedSelect](https://github.com/christianbarkowsky/contao-protectedselect) extension is supported from version 2.0.2.

# Contao form-scr-default (DE)

Mit der Erweiterung können Standardauswahlen für die Formularelemente Selectbox, Checkbox und
Mit der Erweiterung können Standardauswahlen für die Formularelemente Select, Checkbox und
Radiobutton dynamisch vorgegeben werden.

Versionen:

- Contao ^5.2: ``^2.0``
- Contao ^5.3: ``^2.0``
- Contao ^4.9: ``^1.0``

Ab Version 2.0.2 wird die Erweiterung [ProtectedSelect](https://github.com/christianbarkowsky/contao-protectedselect)
unterstützt

Die Standardwerte für die drei Elemente können bisher nur fest bzw. statisch vorgegebenen
Die Standardwerte für die drei Elemente können bisher nur fest bzw. statisch vorgegeben
werden - bei Elementen wie Textfelder ist es aber möglich, ein Standardwert über ein Insert-Tag
dynamisch einzubinden.

Mit der Erweiterung wird die dynamische Vorbelegung auch auf die o.g. Formularfeldtypen
erweitert und so kann z. B. bei einer Auswahl an Anreden (Frau | Herr) beim erneuten Aufruf
des Formulares erneut gesetzt werden.
des Formulars erneut gesetzt werden.

Für den Zugriff auf Werte der Selectbox gibt es drei Inserttags:
Für den Zugriff auf Werte gibt es drei Inserttags:

{{form_rawvalue::<feldname>}} - zieht die Werte aus dem FORM_DATA-Array der aktuellen Session
{{form_rawvalue::<feldname>}} - zieht die Werte aus der aktuellen Formular-Session
{{form_rawvalue_get::<feldname>}} - zieht die Werte aus dem entsprechenden GET-Parameter
{{form_rawvalue_post::<feldname>}} - zieht die Werte aus dem entsprechenden POST-Parameter (ab Version 2.0.2)

Bei dem Einsatz des GET-Parameters sollten Sonderzeichen und Umlaute vermieden werden. Mehrere
Werte für "multiselect" können per "Komma separierter Liste" angegeben werden - siehe Beispiel.
Werte für "multiselect" können per "komma-separierter Liste" angegeben werden - siehe Beispiel.

Die Vorbelegung ist auch über andere geeignete Inserttags möglich.

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
}
],
"require": {
"php": "^8.1",
"php": "^8.2",
"contao/core-bundle": "^5.2"
},
"require-dev": {
Expand Down
17 changes: 12 additions & 5 deletions src/EventListener/FormInsertTags.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,30 @@
/**
* This file is part of e-spin/form-scr-default-bundle.
*
* Copyright (c) 2020-2024 e-spin
* Copyright (c) 2020-2025 e-spin
*
* @package e-spin/form-scr-default-bundle
* @author Ingolf Steinhardt <[email protected]>
* @author Kamil Kuzminski <[email protected]>
* @copyright 2020-2024 e-spin
* @copyright 2020-2025 e-spin
* @license LGPL-3.0-or-later
*/

declare(strict_types=1);

namespace Espin\FormScrDefaultBundle\EventListener;

use Contao\Form;
use Contao\Input;
use Contao\StringUtil;
use Symfony\Component\HttpFoundation\RequestStack;

class FormInsertTags
{
public function __construct(private readonly RequestStack $requestStack)
{
}

/**
* Replace the insert tags
*
Expand All @@ -33,9 +39,10 @@ public function replaceInsertTags(mixed $varTag): mixed
$arrTag = StringUtil::trimsplit('::', $varTag);

if ($arrTag[0] === 'form_rawvalue') {
return \is_array($_SESSION['FORM_DATA'][$arrTag[1]])
? \serialize($_SESSION['FORM_DATA'][$arrTag[1]])
: $_SESSION['FORM_DATA'][$arrTag[1]];
$formRawValue = $this->requestStack->getCurrentRequest()?->getSession()
->get(Form::SESSION_KEY)?->getValue()[$arrTag[1]] ?? '';

return \is_array($formRawValue) ? \serialize($formRawValue) : $formRawValue;
}

if ($arrTag[0] === 'form_rawvalue_get') {
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/config/services.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
services:
Espin\FormScrDefaultBundle\EventListener\FormInsertTags:
public: true
arguments:
- '@request_stack'
tags:
- name: contao.hook
hook: replaceInsertTags
Expand Down

0 comments on commit 6ef1c03

Please sign in to comment.