0 votes
in SoSci Survey (dt.) by s094202 (110 points)

Ich möchte in den PHP Funktionen eine Funktion anlegen die den Fragebogen auf eine andere Seite im Fragebogen umleitet (z.B. "end").

Beispielsweise:

function alterPruefen() {
     if(value('AL01') < 18) {
        goToPage('end');
     }
}

Wenn ich das direkt im Fragebogen ohne Funktion tue, funktioniert es wie erwartet.
Wenn ich das in den PHP-Funktionen verankere und die Funktion alterPruefen() vom Fragebogen aus aufrufe nicht.

Meine eigentliche Funktion ist komplexer und wird mehrfach aus dem Fragebogen aufgerufen, daher will ich sie in einer Funktion haben und nicht direkt in den Fragebogen schreiben.

Gibt es eine Möglichkeit goToPage aus den globalen PHP-Funktionen aufzurufen?

1 Answer

0 votes
by SoSci Survey (320k points)

Gibt es eine Möglichkeit goToPage aus den globalen PHP-Funktionen aufzurufen?

Nein, das wird nicht funktionieren. Der Grund ist ein wenig komplexer:

Der goToPage()-Befehl muss ja "sofort" springen, das heißt, die Ausführung des PHP-Codes muss an der Stelle unterbrochen werden. Deshalb wird da goToPage() vor der Code-Ausführung durch ein return ersetzt. Beim return wird auch gleich definiert, wohin der Fragebogen springen soll.

Wenn man aus einer Funktion zurückkehrt, ist man natürlich im übergeordneten Code und der macht kein return. Sie könnten (aber ich bin nicht sicher, ob das die Komplexität reduziert und von SoSci so akzeptiert wird) folgendes versuchen:

function alterPruefen() {
     if(value('AL01') < 18) {
        goToPage('end');
     }
     return true;
}

Und zum Aufruf der Funktion:

if (true !== ($ret = alterPruefen())) {
  return $ret;
}

Vermutlich wäre es aber einfacher, das goToPage() in den Haupt-Code zu verschieben. Die Funktion würde dann einfach nur die Seite zurückgeben, wohin ggf. gesprungen werden soll:

function alterPruefen() {
     if(value('AL01') < 18) {
        return 'end';
     }
     return true;
}

Und

if (true !== ($ret = alterPruefen())) {
  goToPage($ret);
}
by s094202 (110 points)
Verstehe, vielen Dank für die Antwort.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...