Feature #14090
open
Nützliche _script funktionen
Added by Nicola Chiapolini about 1 year ago.
Updated about 1 year ago.
Description
Ich habe eben wieder mit _script gespielt.
Funktionen die ich nützlich fände und die ich nicht gefunden habe:
- Ich möchte in meiner php-Funktion nicht nur auf einen Record sonder auf das ganze Resultat eines Queries zugreifen.
(Lässt sich erreichen, indem ich meine Funktion in einem Subquery aufrufe. Dann muss ich aber mein Zwischenergebnis jeweils über den Var-Store weiterreichen.)
- Ich möchte gerne dem Var-Store nicht bloss einen einzelnen Wert sondern ganze Arrays hinzufügen und diese dann in einem späteren _script Aufruf oder in twig nutzen.
(für den _script-Aufruf funktioniert das mit (de)serialize, aber für Twig habe ich keine Lösung gefunden)
Gibt es andere Workarounds für meine Wünsche bzw. habt ihr entsprechende erweiterungen geplant?
- Description updated (diff)
Ich habe noch etwas weiter gespielt und Twig lässt sich direkt aus den Funktionen aufrufen.
Mein aktuelles Test-Script filtert alle Oranisationen in deren Name "Institut" vorkommt und formattiert diese anschliessend in einer Aufzählung grün.
Aktuell sieht das Setup wie folgt aus:
- php-file (
filtered_list.php
)
<?php
function filter_array($param, $qfq) {
$data = unserialize($qfq::getVar($param['data'], "VE"));
if ($data == ""){
$data = array();
}
$name = $qfq::getVar("name_de", "R");
if ( strpos( $name, $param['token'] ) !== false ) {
$data[$name] = "green";
} else {
$data[$name] = "red";
}
return [$param['data'] => serialize($data)];
}
function render_twig($param, $qfq) {
$loader = new \Twig\Loader\FilesystemLoader('../qfqtest_project/scripts/templates/');
$twig = new \Twig\Environment($loader);
$data = unserialize($qfq::getVar($param["data"], "V"));
echo $twig->render($param["template"], ['result' => $data]);
}
?>
Und noch ein Update: In meinem Setup oben funktionieren qfqlinks natürlich nicht...
mit json_encode/json_decode statt (de)serialize und dem |json_decode Filter von QFQ für Twig lässt sich das aber lösen:
- php-file
function filter_json($param, $qfq) {
$data = json_decode($qfq::getVar($param['data'], "VE"), true);
if ($data == ""){
$data = array();
}
$name = $qfq::getVar("name_de", "R");
if ( strpos( $name, $param['token'] ) !== false ) {
$data[$name] = "green";
} else {
$data[$name] = "red";
}
return [$param['data'] => json_encode($data)];
}
- Tracker changed from Support to Feature
- Target version changed from next3 to 23.6.0
Also available in: Atom
PDF