[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • YForm: Wie komme ich an den Namen der Upload-Datei?
Seite 1 von 1

YForm: Wie komme ich an den Namen der Upload-Datei?

Verfasst: 6. Jun 2017, 21:13
von Tito
Hi Leute,
ich habe ein Frontend-Formular mit einem Dateiupload-Feld gebaut. Hier meine Pipe-Notation:

Code: Alles auswählen

upload|anhang|Foto des Rezeptes für Vorbestellung|2000|.jpg,.jpeg,.png,.pdf|0|Datei zu klein,Datei zu groß,Nur jpg/png/pdf erlaubt,Keine Datei vorhanden,Datei entfernt|
Die Datei wird auch hochgeladen, und zwar nach redaxo/data/addons/yform/plugins/manager/upload/frontend/. Doch der Dateiname bekommt noch die Id des Datenbank-Eintrages vorangestellt. Wie bekomme ich nun den Dateinamen in das E-Mai-Template, damit ich dem Kunden einen Downloadlink in die E-Mail schreiben kann? REX_YFORM_DATA[field="anhang"] enthält nur den Dateinamen ohne id_ :?

Merci und Gruß
Tito

Re: YForm: Wie komme ich an den Namen der Upload-Datei?

Verfasst: 10. Jun 2017, 14:08
von Ingo
Du willst glaube ich das hier haben:
https://github.com/yakamara/redaxo_yfor ... d.php#L137

Dazu könntest du hier:
https://github.com/yakamara/redaxo_yfor ... d.php#L185
was in Richtung

Code: Alles auswählen

$this->params['value_pool']['email'][$this->getName().'_downloadlink'] = 'HierUrlDerDatei'
ergänzen. Danach sollte der Pfad im E-Mail Template unter 'xxx_downloadlink' zur Verfügung stehen. Das ganz idealerweise nicht in der upload.php selbst, sondern in einer Kopie die das nächste Update übersteht.

Ohne Gewähr, habs noch nicht gemacht sondern grad nur in die Klasse auf Github geguckt.

Re: YForm: Wie komme ich an den Namen der Upload-Datei?

Verfasst: 11. Jun 2017, 09:36
von Tito
Jo, so in der Art hatte ich das versucht:

Code: Alles auswählen

$this->params['value_pool']['email'][$this->getName().'_downloadlink'] = $filepath;

Aber xxx_downloadlink steht dann
.../redaxo/data/addons/yform/plugins/manager/upload/temp/ffe5db012b22bbf9db5d6a0edafeb9198e06bf48f27c8edcdbe236a924363b0e_9_essplatz_450x300.jpg

und im Dateisystem sieht das nach dem Upload dann so aus:
.../redaxo/data/addons/yform/plugins/manager/upload/frontend/25_essplatz_450x300.jpg

Die /temp/ Datei wird ja - wie erwartet - nach dem upload gelöscht. Ich hab versucht, alle möglichen Variablen so auszugeben, aber in keiner habe ich die Id des erstellten Datenbankeintrages gefunden. Anscheinend wir der Dateiname in der postAction (https://github.com/yakamara/redaxo_yfor ... d.php#L248) geändert und vor allem auch erst dort der Datenbankeintrag erstellt, so dass ich keine Möglichkeit habe, an die Id des Eintrages zu kommen.

Gibt es keine Möglichkeit, den Namen vorher festzulegen ohne dass er wieder geändert wird?

Re: YForm: Wie komme ich an den Namen der Upload-Datei?

Verfasst: 11. Jun 2017, 13:18
von Ingo
Du könntest die E-Mail aus der Post Action heraus verschicken:

Code: Alles auswählen

$etpl = rex_yform_email_template::getTemplate('NameDeinesEmailTemplates');
$replace = [
    'downloadlink' => 'HierLinkRein'
];
$etpl = rex_yform_email_template::replaceVars($etpl, $replace);

$etpl['mail_to'] = 'paul@bocuse.tld';
$etpl['mail_to_name'] = 'Paul Bocuse';

rex_yform_email_template::sendMail($etpl, $mailvar['template_name']);