Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Responses, Weiterleitungen, Fehler und JSON

Wie eine Modul-View antwortet - das $Result-Array statt eines Response-Objekts, das Pagelayout darum herum, Weiterleitungen mit redirectTo und sichere Weiterleitungsziele, Fehlerseiten mit handleError und eZError-Codes…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/responses-redirects-and-errors.md

On this page

This page is a translation. Read the English original

Responses, Weiterleitungen, Fehler und JSON

Diese Seite richtet sich an Entwickler, die aus einem Controller Response, JsonResponse, redirect() oder abort(404) zurückgeben. Eine Modul-View gibt ein Array zurück, und der Kernel macht daraus die Seite. Weiterleitungen und Fehler laufen über das Modulobjekt; Nicht-HTML-Antworten werden direkt geschrieben und beenden den Request.

Inhalt

  1. Das Ergebnis-Array
  2. Das Pagelayout
  3. Weiterleitungen
  4. Fehler
  5. JSON und andere Formate
  6. Header und Statuscodes
  7. Übersetzungstabelle

Das Ergebnis-Array

SchlüsselBedeutung
contentdas HTML der View, meist $tpl->fetch( 'design:<path>.tpl' )
pathdie Brotkrumennavigation: Einträge array( 'text' => ..., 'url' => ... ), der letzte mit 'url' => false
title_pathder Pfad des Seitentitels, wenn er von path abweichen soll
pagelayoutein anderes Pagelayout-Template für diese View oder false für keines
navigation_part, ui_contextwie die Administrations-Designs die Seite einrahmen

Die vollständige Liste mit den Schlüsseln, die der Kernel und die Inhalts-Views ergänzen, finden Sie in der Referenz des Modulergebnisses.

Das Pagelayout

Die pagelayout.tpl des Siteaccess ist das Grundlayout. Es erhält $module_result und gibt {$module_result.content} an der Stelle aus, an der das HTML der View steht. Eine View wählt ein anderes Layout, indem sie dessen Template nennt (die Benutzer-Views setzen $Result['pagelayout'] = 'loginpagelayout.tpl'), oder keines mit false (View-Ergebnisse, Templates und das Pagelayout).

Weiterleitungen

BedarfAufruf
Auf eine Adresse weiterleitenreturn $Module->redirectTo( '/expdemo/list' );
Auf eine andere View desselben Moduls weiterleitenreturn $Module->redirectToView( 'list', array() );
Auf eine Adresse aus dem Request weiterleitenzuerst prüfen: eZRedirectManager::safeURI( $http->postVariable( 'RedirectURI' ) ) gibt das Ziel oder false zurück
„Zurück, woher Sie kamen“eZRedirectManager::returnURI( $module, '/expdemo/list', eZRedirectManager::formReturnURIs() )

Verwenden Sie nach jedem erfolgreichen Absenden eines Formulars das Muster POST, Weiterleitung, GET. Die Hilfsfunktionen für sichere Weiterleitungen folgen nur Adressen der eigenen Website (Sichere Weiterleitungen).

Fehler

return $Module->handleError( eZError::KERNEL_NOT_FOUND, 'kernel' );       // not found
return $Module->handleError( eZError::KERNEL_ACCESS_DENIED, 'kernel' );   // access denied; anonymous users get the login page

eZError definiert weitere Codes, darunter KERNEL_NOT_AVAILABLE, KERNEL_MOVED, KERNEL_MODULE_NOT_FOUND und KERNEL_FORM_TOKEN_REFUSED. Die Fehlerseite wird vom Modul error mit dem Design des Siteaccess gerendert und lässt sich daher wie jedes andere Template gestalten. Fehler, die Benutzer melden, finden Sie anhand ihrer Referenz in den Logs (Einen Fehler anhand seiner Referenz finden).

Exceptions, die aus einer View entweichen, werden nicht wie in Symfony oder Laravel von einem konfigurierten Exception-Listener in eine 500-Seite verwandelt: Behandeln Sie erwartete Fehlschläge in der View und geben Sie ein Fehlerergebnis zurück; protokollieren Sie unerwartete mit eZDebug::writeError() (Debugging, Logging und Fehler).

JSON und andere Formate

Für eine kleine JSON-Antwort aus Ihrer eigenen View senden Sie sie und beenden den Request ohne Pagelayout:

header( 'Content-Type: application/json; charset=utf-8' );
echo json_encode( array( 'ok' => true, 'data' => $data ) );
eZExecution::cleanExit();

Unter Velocity beendet cleanExit() den Request mit einer Exception, die der Server behandelt; umschließen Sie den Aufruf niemals mit catch ( Exception $e ), sonst wird die Seite an Ihre Ausgabe angehängt. Für APIs sollten Sie die vorhandenen Schichten bevorzugen: ezjscore-Serverfunktionen für das JavaScript Ihrer Seiten, die REST-API für andere Programme (REST- und JSON-APIs).

Header und Statuscodes

  • Setzen Sie Header vor der Ausgabe mit der PHP-Funktion header(); lesen Sie Request-Header über eZSys oder über $_SERVER, so wie der Kernel es vorbereitet hat.
  • Caching-Header für Seiten anonymer Besucher sind Einstellungen, kein Code: site.ini [HTTPHeaderSettings] (HTTP-Caching).
  • Request-Regeln können mit „nicht gefunden“, „verboten“, der Anmeldung oder einer Weiterleitung antworten, bevor Ihre View läuft (Middleware).

Übersetzungstabelle

FrameworkExponential
return $this->render( 'item.html.twig', [...] ) / return view( 'item', [...] )$tpl->setVariable(); $Result['content'] = $tpl->fetch( 'design:...' );
return $this->redirectToRoute( 'list' ) / return redirect()->route( 'list' )return $Module->redirectTo( '/expdemo/list' );
throw $this->createNotFoundException() / abort( 404 ) / raise Http404return $Module->handleError( eZError::KERNEL_NOT_FOUND, 'kernel' );
throw new AccessDeniedException() / abort( 403 )return $Module->handleError( eZError::KERNEL_ACCESS_DENIED, 'kernel' );
return new JsonResponse( $data ) / response()->json( $data )header(); echo json_encode(); eZExecution::cleanExit();

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x