Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
Tito
Beiträge: 128
Registriert: 8. Mär 2008, 09:53
Wohnort: Aachen
Kontaktdaten: Website

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

6. Jun 2017, 21:13

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

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

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

10. Jun 2017, 14:08

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.

Tito
Beiträge: 128
Registriert: 8. Mär 2008, 09:53
Wohnort: Aachen
Kontaktdaten: Website

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

11. Jun 2017, 09:36

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?

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

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

11. Jun 2017, 13:18

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']);

Zurück zu „AddOns / Packages [R5]“