国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Anforderungsdaten festlegen – CakePHP 4
P粉212971745
P粉212971745 2024-03-26 14:02:51
0
1
755

Wir haben eine CakePHP 3.x-Anwendung, die wir auf die neueste CakePHP 4.x aktualisiert haben. Im Rahmen dieser Arbeiten haben wir auch von PHP 7 auf PHP 8 umgestellt.

Beim Testen der App ist uns aufgefallen, dass eine Funktion nicht mehr funktioniert.

Die Anwendung ist eine durchsuchbare Datenbank und zum Caching in Redis integriert. Eine dieser Funktionen bedeutet, dass Benutzersuchen zwischen dem erneuten Laden der Seite beibehalten werden. Dies wird erreicht, indem die serialisierten Formulardaten in Redis geschrieben und dann wieder in das Feld input in der Vorlage eingefügt werden. Dies bedeutet, dass Benutzer die von ihnen eingegebenen Suchbegriffe sehen k?nnen; sie müssen die Suchbegriffe nicht erneut eingeben, wenn die Seite aktualisiert wird.

Der Code zum erneuten Auffüllen der input Formularfelder in der

CakePHP 3.x-Anwendung sieht folgenderma?en aus:

$form_fields = ['f1', 'f2', 'f3'];
Das Array $form_fields 數(shù)組包含模板中 input$form_fields enth?lt die Namen der

Formulare in der Vorlage. Zum Beispiel:

<input type="text" name="f1">
$user_search 是從 Redis 獲取并反序列化的數(shù)據(jù)數(shù)組。例如,我們可能有 $user_search['f1']$user_search['f3'] 包含 Redis 數(shù)據(jù); f2Der n?chste Teil des Codes füllt das Formular neu aus. In diesem Fall wird

nicht ausgefüllt, da der Benutzer nicht mit diesem Feld gesucht hat.

foreach ($form_fields as $form_field) {
    $this->request->getData()[$form_field] = (isset($user_search[$form_field])) ? $user_search[$form_field] : '';
}
In Cake 3.x-Anwendungen funktioniert das oben Genannte einwandfrei. Wenn die Seite neu geladen wird, werden die Formularfelder als Ergebnis der Datenanforderung durch set

festgelegt. In der obigen Schleife wird beispielsweise Folgendes ausgewertet:

$this->request->getData()['f1'] = 'foo';
$this->request->getData()['f3'] = 'bar';
f1,“bar”為 f3f2 中沒有任何內(nèi)容,因此根據(jù) : '';Das bedeutet, dass die angeforderten Daten für ?foo“

sind und die Bedingung sie auf die leere Zeichenfolge setzt.

In einer CakePHP 4.x-Anwendung funktioniert dies nicht : ''; 條件修改為 : 'test';; beim Neuladen der Seite werden nicht alle Formularfelder ausgefüllt. Ich habe best?tigt, dass sie nicht auf eine leere Zeichenfolge gesetzt werden, indem ich das oben erw?hnte hinzugefügt und sichergestellt habe, dass die Zeichenfolge ?test“ nicht im Feld angezeigt wird.

$user_searchDie Daten sind in Redis vorhanden und ich habe best?tigt, dass

das enth?lt, was oben gezeigt wird – mit anderen Worten, die Daten gehen nicht verloren, also haben wir das ausgeschlossen.

Wenn ich https://book.cakephp.org/4/en/controllers/request-response.html lese, sehe ich kein Beispiel für die Einstellung von Anforderungsdaten. Es gibt eine Methode , die das tut, was Sie erwarten – sie getData() liest die angeforderten Daten.

Gibt es eine M?glichkeit, die Anforderungsdaten in Cake 4.x so festzulegen, dass der obige Code funktionieren kann?

In normalem PHP entspricht das, was wir tun,

$_POST['f1'] = 'foo';
$_POST['f2'] = ''; // empty string as no value set by user
$_POST['f3'] = 'bar';

Soweit ich wei?, funktioniert dies in PHP und Sie k?nnen die Anforderungsdaten mit allem in Ihrem Code festlegen/überschreiben. Wenn das falsch ist, sagen Sie mir bitte, was ich tun soll.

Aus Gründen der Klarheit haben wir die Anforderungsdaten auf diese Weise eingerichtet, weil die Suche über einen Ajax-Aufruf erfolgt. Wenn der Benutzer zum ersten Mal die Suchkriterien eingibt, wurde die Seite noch nicht neu geladen, sodass die Formularfelder anscheinend korrekt ausgefüllt sind. Dieses Problem tritt auf, wenn die Seite neu geladen wird. In diesem Fall m?chten wir das Formular erneut mit den eingegebenen Werten füllen, bevor wir die Seite neu laden.

P粉212971745
P粉212971745

Antworte allen(1)
P粉722521204

您正在尋找的函數(shù)是withData。請記住,請求對象是不可變的,因此您需要將該函數(shù)調(diào)用的結(jié)果分配回請求對象,例如與$this->setRequest($this->getRequest()->withData('f1', 'foo')->withData('f3', 'bar'))。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage