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

View-Parameter, ungeordnete Parameter und POST

Wie eine Adresse eine View erreicht - geordnete, ungeordnete und Benutzerparameter, wie eZModule::run() sie zerlegt, und das sichere Lesen von POST- und Sitzungswerten mit eZHTTPTool.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-3-extension-developer/view-parameters.md

On this page

This page is a translation. Read the English original

View-Parameter, ungeordnete Parameter und POST

Teil 3, Kapitel 10. Eine View erhält ihre Eingaben aus drei Quellen: der Adresse, dem POST-Rumpf eines Formulars und der Sitzung. Dieses Kapitel zeigt, wie jede davon ankommt, so wie eZModule::run() in lib/ezutils/classes/ezmodule.php sie zerlegt, und wie Sie sie sicher lesen.

Geordnete Parameter

$ViewList['world'] = array( 'script' => 'world.php', 'params' => array( 'Name', 'Mood' ) );

/hello/world/Ada/happy ergibt $Params['Name'] = 'Ada' und $Params['Mood'] = 'happy'. Ein fehlender Parameter ist nicht gesetzt; lesen Sie ihn mit isset().

Ungeordnete Parameter

$ViewList['list'] = array( 'script' => 'list.php',
                           'params' => array(),
                           'unordered_params' => array( 'offset' => 'Offset', 'sort' => 'SortBy' ) );

Die URL nennt sie in beliebiger Reihenfolge nach den geordneten Parametern. Beide Schreibweisen funktionieren:

Adresse$Params
/hello/list/offset/20Offset = '20', SortBy = false
/hello/list/(offset)/20/(sort)/nameOffset = '20', SortBy = 'name'

Die erste Form wird mit den Pfadelementen abgeglichen; die zweite, in Klammern, ist ein Benutzerparameter, den der Kernel auf den gleichnamigen ungeordneten Parameter abbildet. Ein Name am Ende der Adresse ohne Wert ergibt false, „als wäre er nicht angegeben“.

Benutzerparameter

Jedes Paar /(name)/value der Adresse wird außerdem in $Params['UserParameters'] gesammelt, ob die View es deklariert oder nicht. Inhalts-Views geben sie als $view_parameters an Templates weiter; so blättert /(offset)/10 durch einen Ordner. Der eZpedia-Artikel "How to add view parameter support to your custom module view" beschreibt denselben Mechanismus für ältere Versionen.

<?php
$userParameters = isset( $Params['UserParameters'] ) ? $Params['UserParameters'] : array();
$offset = isset( $userParameters['offset'] ) ? (int)$userParameters['offset'] : 0;
$tpl = eZTemplate::factory();
$tpl->setVariable( 'view_parameters', $userParameters );

Alles aus der Adresse ist nicht vertrauenswürdig

Behandeln Sie jeden Parameter wie Text, den ein Fremder eingetippt hat:

WertVorgehen
eine ID(int)$Params['ObjectID'], dann abrufen und prüfen, ob sie existiert
ein Offset oder Limit(int) und begrenzen: max( 0, min( $offset, 10000 ) )
ein Wort aus einer festen Listemit der Liste vergleichen: in_array( $sort, array( 'name', 'published' ), true )
freier Text, der auf einer Seite erscheintim Template maskieren: {$name|wash}
freier Text in SQLnie direkt; verwenden Sie eZPersistentObject oder $db->escapeString()

POST-Variablen

Verwenden Sie eZHTTPTool (lib/ezutils/classes/ezhttptool.php):

<?php
$http = eZHTTPTool::instance();

if ( $http->hasPostVariable( 'Comment' ) )
{
    $comment = trim( (string)$http->postVariable( 'Comment' ) );
}
$page = (int)$http->postVariable( 'Page', 1 );      // with a fallback value
$fromQuery = $http->getVariable( 'q', '' );           // ?q=... of the address

postVariable( $var, $fallbackValue = null ) gibt den Ersatzwert zurück, wenn die Variable fehlt.

Ziehen Sie die Aktionen des Moduls (single_post_actions, isCurrentAction(), siehe Module und Views) dem Prüfen von Schaltflächennamen von Hand vor: Sie halten die View lesbar.

Die Sitzung

<?php
$http = eZHTTPTool::instance();
$http->setSessionVariable( 'MysiteHelloLast', $name );
$last = $http->hasSessionVariable( 'MysiteHelloLast' ) ? $http->sessionVariable( 'MysiteHelloLast' ) : null;
$http->removeSessionVariable( 'MysiteHelloLast' );

Stellen Sie Sitzungsschlüsseln den Namen Ihrer Erweiterung voran. Legen Sie keine großen Daten oder Objekte in der Sitzung ab.

Nach einem POST weiterleiten

Eine View, die etwas geändert hat, endet mit einer Weiterleitung ($Module->redirectToView() oder redirectTo()), damit ein Neuladen der Seite das Formular nicht erneut sendet.

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