2017-06-19 2 views
0

Ich versuche ein Laravel Request Objekt mit merge zu ändern, um den Schlüssel zu aktualisieren.Laravel erhalten aktualisierten Anforderungswert nach der Zusammenführung

ich dies mit dem folgenden Code tue ...

if ($this->request->get('trial_end', '')) { 
    $this->request->merge(array('trial_end' => 'test')); 
} 
dd($this->request->all(), $this->request->get('trial_end')); 

ich $this->request->get('trial_end') erwarten test zu sein, ist es aber nicht. $this->request->all() gibt zurück, was ich erwartet habe.

Ergebnis sterben Dump

array:1 [ 
    "trial_end" => "test" 
] 
"12/4/2018" 

Wie kommt es nicht den aktualisierten Wert zurückkehrt?

+0

Ich würde prüfen, ob in Ihrer $ request-> all() 'gibt es ein Feld mit dem Wert von" 12/4/2018 ". Möglicherweise überschreibt etwas Ihren 'trial_end'-Wert. Ich schätze, du zeigst uns nicht den ganzen Code. – lesssugar

+0

@lesssugar Das ist der ganze Code. Die gesamte $ request-> all() 'befindet sich im Chipspeicherauszug. – Henry

Antwort

0

es herausgefunden. Die Lösung war

$this->request->get('trial_end');

zu

$this->request->input('trial_end');

Dies funktioniert zu ändern, weil input() die Daten in all() zu getInputSource()->all() hinzufügt, bevor ein data_get auf, das zu tun, während get() führt nur ein data_get auf dem Eingabeparameter (Vormodifikationen).

Neuer Code (mit einer Änderung von Alex vorgeschlagen)

if ($this->request->has('trial_end')) { 
    $this->request->merge(['trial_end' => 'test']); 
} 
dd($this->request->all(), $this->request->input('trial_end')); 

Neue Ergebnisse

array:1 [ 
    "trial_end" => "test" 
] 
"test" 

Hope this alle anderen hilft, die über dieses Problem kommen.

+0

Auch gefunden [this] (https://stackoverflow.com/questions/30186169/laravel-request-input-or-get) von Interesse – Henry

0

das Problem ist es nicht mit der Zuweisung, aber mit dem Vergleich, hier ist meine persönlich beste Möglichkeit zu überprüfen, ob ein Wert in der Anfrage festgelegt wurde.

public function test(Request $request){ 

    if (!$request->has('trial_end')) { //this is what you have wrong 
     $request->merge(array('trial_end' => 'test')); 
    } 
    return $request->get('trial_end'); 
} 

Grüße

+0

Dies funktioniert auch nicht. Ich versuche nicht, ein 'trial_end'-Feld hinzuzufügen, ich versuche lediglich, den vorhandenen Wert zu ändern. "Test" ist Platzhalter. – Henry

+0

Ich habe Ihren Code geändert und die Merge-Funktion verwendet, ist das was Sie wollen? – alexalejandroem

+0

Nein. Dies ist das Gegenteil von dem, was mein Code tut. – Henry

Verwandte Themen