Nun habe ich es:
PHP-Code:
<?php
// ../src/EventListener/processFormDataListener.php
// Aufruf: nach Absenden eines Formulars
// Funktionen:
//
// 01. Mitgliedsantragsformular (id = 23)
// Update eines am FE angemeldeten Mitglieds mit den vom Formular übermittelten Feldinhalten
namespace App\EventListener;
use Contao\CoreBundle\ServiceAnnotation\Hook;
use Terminal42\ServiceAnnotationBundle\ServiceAnnotationInterface;
use Doctrine\DBAL\Connection;
use Symfony\Component\Security\Core\Security;
use Contao\FrontendUser;
use Contao\Form;
class processFormDataListener implements ServiceAnnotationInterface
{
/**
* @var Connection
*/
private $connection;
/**
* @var Security
*/
private $security;
public function __construct(Connection $connection, Security $security)
{
$this->connection = $connection;
$this->security = $security;
}
/**
* @Hook("processFormData", priority=-10)
*/
public function onProcessFormData(array $submittedData, array $formData, ?array $files, array $labels, Form $form ): void
{
// dump($submittedData, $this->security); die();
if (23 === (int) $form->id) {
// dump($submittedData, $formData); die();
// get member-ID
$user = $this->security->getUser();
if (!$user instanceof FrontendUser) {
// Darf nicht auftreten! Denn Formular erst nach Anmeldung zugänglich.
dump('Nicht angemeldeter User in ProcessFormData, Mitgliedsantrag', $submittedData, $form, $user); die();
return;
}
$id = $user->id;
// get an instance of MemberModel by member-ID
$objMember = \MemberModel::findByPk($id);
// Set value
foreach ($submittedData as $key=>$value) {
$objMember->$key = $value;
}
// and save
$objMember->save();
// dump($submittedData, $user, $id, $objMember); die();
}
}
}
?>
Denkt ihr, der Dump macht Sinn?
Gibt es noch Anmerkungen, Bedenken, ...?
Lesezeichen