Seite 1 von 1

Objekte im Frontend bearbeiten

Verfasst: Mi 11. Jan 2023, 16:14
von mobby
Moin,
nach einigen Jahren machen ich mich mal wieder an webEdition ran ;-)
Ich will Objekt über ein Frontend anlegen bzw. editieren. Wurde dahingehend in den letzten Jahre geändet?
Ich bekomme es einfach nicht hin, obwohl ich

Code: Alles auswählen

<we:write type="object" formname="neuerartikel" publish="true" classid="1" />
in der Seite habe. Könnt ihr mir mal auf die Sprünge helfen...

Re: Objekte im Frontend bearbeiten

Verfasst: Fr 13. Jan 2023, 11:56
von Finn
Moin Moin,

wie sieht denn das Formular zum Schreiben des Objekts aus?

Das we:write erwartet folgende Struktur:

Code: Alles auswählen

array(
'edit_object'=>'1',
'we_editObject_ID'=>'0', // wenn 0 wird ein neues angelegt, beim Bearbeiten steht die zu bearbeitende ID drin
we_ui_we_global_form[feldName]=> value, // Liste mit den Feldern und Werten
)
Das Formular kann so aussehen:

Code: Alles auswählen

<we:form type="object" classid="4" name="eventForm" pass_id="eventForm" method="post" enctype="multipart/form-data" id="self">
<we:userInput type="textinput" name="Titel" required="required" />
...
Das entsprechende we:write dazu: (name und parentid lege ich vorher fest)

Code: Alles auswählen

<we:comment>Schreibt das Objekt</we:comment>
<we:write type="object" formname="eventForm" publish="true" searchable="true" classid="4" onduplicate="increment" onpredefinedname="overwrite" forceedit="true" name="\$objectName" parentid="\$pathIDMonth" />

Re: Objekte im Frontend bearbeiten

Verfasst: Fr 13. Jan 2023, 13:02
von Finn
für userInput brauchst du natürlich dann auch eine aktive userSession (einen eingeloggten Kunden).

man kann das Formular aber auch faken (die Struktur aus dem ersten Beispiel). Könnte dann so aussehen:

Code: Alles auswählen

class Form
{
	public function create_Form(int $id, array $content, int $classID, string $url){
	
		foreach ($content as $key => $value) {
			$content['we_ui_we_global_form'][$key] = $value; // hier schreiben wir die einzelnen Felder aus dem Array in die Formular Syntax um
			unset($content[$key]);
		}

		$content["classID"] = $classID;
		$content['edit_object'] = 1;
		$content['we_editObject_ID'] = $id;

		$content = http_build_query($content);

		$options = array(
			'http' => array(
				'header'  => "Content-type: application/x-www-form-urlencoded",
				'method'  => 'POST',
				'content' => $content,
			),
		);


		$context = stream_context_create( $options );
		return file_get_contents( $url, false, $context );
	}
}