Seite 1 von 3

Objekte mit php erstellen

Verfasst: Do 20. Jan 2022, 17:38
von weisspunkt
Liebe WebEdition Profis
Ich stehe vor folgender Herausforderung:
Bei einem Kunden soll ein Kontaktformular per Mail verschickt werden, dies klappt wunderbar mit we:sendmail. Zusätzlich wünscht er, dass alle ausgefüllten Formular gespeichert werden, dies falls er mal das Mail nicht erhält, aus welchem Grund auch immer.

Folgendes habe ich nun versucht, leider ohne Erfolg, das Objekt wird nicht geschrieben:

Code: Alles auswählen

<?php
include_once($_SERVER["DOCUMENT_ROOT"]."/webEdition/we/classes/import/we_import_functions.class.php");

$objProdukt = $_POST['produkt']; // input Feld
$objFirma = $_POST['Firma'];  // input Feld
$objName = $_POST['Vorname'] . " " . $_POST['Nachname'];  // input Feld
$objMail = $_POST['email'];  // input Feld
$objPhone = $_POST['Telefon'];  // input Feld
$objAnfrage = $_POST['Anfrage'];  // Textarea
$objFilename = "testobjekt";

// Nun kommt die wE-Funktion zum Schreiben/Import der Objekte ins Spiel
$objectClassID = 3; // (int) ID der Klasse, auf der unser Objekt basieren soll
$objectFields = array( // (array) Wir befuellen unsere Objektfelder mit Variablen, die unsere Werte enthalten
	"Produkt" => $objProdukt,
	"Firma" => $objFirma,
	"Name" => $objName,
	"E-Mail" => $objMail,
	"Telefon" => $objPhone,
	"Anfrage" => $objAnfrage,
);
$objectFilename = $objFilename; // (string) Der Name unseres Objekts
$objectCategories = array(); // Die Kategorien brauchen wir nicht, aber es muss trotzdem ein Array initilisiert werden
we_import_functions::importObject($objectClassID, $objectFields, $objectCategories, $objectFilename, true, true, 0, we_exim_ExIm::COLLISION_REPLACE);
?>
Die Daten werden mit einem <we:form> an diese Seite übergeben.

Hat hier jemand eine Idee?
Auf der Seite nutze ich WE 9.1.

Re: Objekte mit php erstellen

Verfasst: Fr 21. Jan 2022, 22:35
von NilSole
Kannst du nicht einfach we:write verwenden?

Re: Objekte mit php erstellen

Verfasst: Mo 24. Jan 2022, 09:18
von haydi
Hola,

hast du es mit dem Tipp we:write hinbekommen?
Es ist auf jeden Fall nicht ratsam - wegen Updatefähigkeit - direkt webEdition Klassen zu referenzieren/einzusetzen.
Und es gibt eben webEdition-Tags für diese Aufgabe :-)

Sonnige Grüße
Haydi

Re: Objekte mit php erstellen

Verfasst: Mi 26. Jan 2022, 19:04
von weisspunkt
Hey Haydi
Ich bin immer ein grosser Fan von We Tags. Leider habe ich es so nicht hinbekommen. So wie ich gelesen habe, funktioniert das write Tag nur für Login User, hier müsste es jedoch für User funktionieren, welche sich nicht einloggen müssen.
Oder müsste ich das Formular mit we:userinput machen?

Ich danke dir für deine Rückmeldung :-)

Liebe Grüsse
Markus

Re: Objekte mit php erstellen

Verfasst: Mi 26. Jan 2022, 23:10
von NilSole
Ohne es im Detail zu wissen, könnte es reichen, protected=false in we:write zu setzen. Das Formular müsste als we:form type=object erzeugt werden, Eingaben vermutlich mit we:userInput. Dann müsstest du ggfs die Request Vars prüfen für deine Mails.

Übrigens braucht es das include_once von WE Scripts nicht mehr, das macht jetzt der Autoloader. Aber dank WE-Tag solltest du hier dann darauf eh verzichten können :wink:

Re: Objekte mit php erstellen

Verfasst: Do 27. Jan 2022, 10:00
von haydi
Holaaa,

okay, hier mal ein php-Schnipselchen :-)

Code: Alles auswählen

	// in DB abspeichern
	$obj = new we_objectFile();
	$obj->we_new(); // wir legen ein neues an
	$obj->TableID = 1; // die Table-ID 
	$obj->setRootDirID(true);
	$obj->resetParentID();
	$obj->restoreDefaults();
	$obj->Text = date('Y-m-d_H-i-s').'-'.time(); // objektname, damit ist er unique 
	$obj->Path = $obj->getParentPath().(($obj->getParentPath() != "/") ? "/" : "").$obj->Text;
	$obj->setElement('timestamp', time()); // braucht's natürlich nicht... ich hab das ganz gerne
	$obj->setElement('tabellenfeld', 'tabelleninhalt'); // alle tabellenspalten können nun mit dem gewünschten wert gefüllt werden	
	$obj->setElement('tabellenfeld2', 'tabelleninhalt2');
	if (!$obj->we_publish()) {
		t_e('upsi, da hat was nicht geklappt);
	}
hoffe, das hilft :-)

liebe grüße
haydi

Re: Objekte mit php erstellen

Verfasst: Fr 28. Jan 2022, 11:02
von mokraemer
@Haydi, dein Kode ist aber nicht mehr so ganz auf dem aktuellen Stand.

Re: Objekte mit php erstellen

Verfasst: Fr 28. Jan 2022, 11:12
von haydi
Hola,

ja, denke ich mir.
für die 8er Version ist er auch "nur" gedacht... für die 9er muss ich erst noch was schreiben und gucken, was sich getan hat ;-)

liebe grüße
haydi

Re: Objekte mit php erstellen

Verfasst: Do 3. Feb 2022, 16:36
von weisspunkt
Hallo zusammen
Also mit we:write hat es tatsächlich geklappt. Vielen Dank für eure Antworten. Nun wollte ich noch einige zusätzlich infos in das Objekt schreiben, ich habe diese Infos dem array vor dem Befehl we:write hinzugefügt leider hat dies nicht funktioniert. Ist es möglich mit we:ifwritten nachträglich noch etwas dem Objekt hinzu zu fügen?

Liebe Grüsse
Markus

Re: Objekte mit php erstellen

Verfasst: Di 20. Sep 2022, 13:50
von Finn
Du kannst dir die ID des geschriebenen Objekts aus $_REQUEST['we_editObject_ID'] auslesen und weitere Inhalte reinschreiben.

Re: Objekte mit php erstellen

Verfasst: Sa 8. Okt 2022, 23:34
von Finn
mokraemer hat geschrieben: Fr 28. Jan 2022, 11:02 @Haydi, dein Kode ist aber nicht mehr so ganz auf dem aktuellen Stand.
Moin Marc,
ist die aktuelle Syntax irgendwo dokumentiert?

Re: Objekte mit php erstellen

Verfasst: So 9. Okt 2022, 12:11
von mokraemer
Moin Marc,
ist die aktuelle Syntax irgendwo dokumentiert?
Nein. Um die Doku wollte sich ja die Community kümmern. Es gibt nur https://www.webedition.org/de/dokumenta ... collapse-3
Es handelt sich hier eh um interne Funktionen da sollte man eh verstehen, wie WE funktioniert.

Re: Objekte mit php erstellen

Verfasst: So 9. Okt 2022, 17:32
von ThomasGoebe
mokraemer hat geschrieben: So 9. Okt 2022, 12:11
Moin Marc,
ist die aktuelle Syntax irgendwo dokumentiert?
Nein. Um die Doku wollte sich ja die Community kümmern. Es gibt nur https://www.webedition.org/de/dokumenta ... collapse-3
Es handelt sich hier eh um interne Funktionen da sollte man eh verstehen, wie WE funktioniert.
Da drehen wir uns alle schön im Kreis. Wie soll "die Community" etwas dokumentieren, wenn "die Entwickler" niemandem verraten, wie eine Funktion geht? Soll sich "die Community" ernsthaft alles aus dem Quellcode von webEdition herauslesen? Wo ist die PHP Doc Dokumentation aus dem Code? Und was passiert, wenn sich da was ändert? Soll "die Community" alle Comits stetig studieren und versuchen zu erfassen, was sich geändert hat? Bei den vielen Anpassungen pro Version?

Das wird nicht funktionieren. Das sollten "die Entwickler" und "der Vorstand" auch inzwischen gemerkt haben. Eine initiale Doku kann nicht von "der Community" kommen.

Re: Objekte mit php erstellen

Verfasst: So 9. Okt 2022, 17:37
von ThomasGoebe
Um die eigentliche Frage zu beantworten:

In webEdition ist es seitens der Entwickler nicht vorgesehen, dass Objekte mit PHP erstellt oder geändert werden. Es soll immer und bei allen Aufgabenstellungen mit wE Tags gearbeitet werden. Also sollen Objekte mit we:write und einem vorher durch we:form erstellen Formular erstellt werden.
Alles andere sind interne Funktionen, ist nicht updatesicher und wird weder dokumentiert noch unterstützt.

Re: Objekte mit php erstellen

Verfasst: So 9. Okt 2022, 21:15
von WBTMagnum
Hallo,

Ein paar Infos findet man schon zum Thema wie man Daten bzw. Dokumente mit PHP bearbeiten kann: Ist zwar nicht viel, aber immerhin etwas.

Liebe Grüße,
Sascha

PS: Leider ist die Bearbeitung der Doku buggy. Tlw. lässt sich der Editor nicht öffnen, was eine Bearbeitung verunmöglicht. Der Bug-Report dazu hat offensichtlich noch keine Beachtung gefunden. Wäre super, wenn sich das jmd. anschauen könnte. Dann kann man auch wieder Änderungen einarbeiten :wink: