2017-06-19 8 views
0

mergeを使用してLaravel Requestオブジェクトを変更して、trial_endを更新しようとしています。Laravelはマージ後に更新されたリクエスト値を取得します

私は次のコードを使用して、これをやっている...

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

私は$this->request->get('trial_end')testことを期待し、そうではありません。 $this->request->all()は、私が期待したものを返します。ダイ・ダンプそれが更新された値を返していない来るどのよう

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

結果?

+0

あなたの '$ request-> all()'に '' 12/4/2018 ''の値を持つフィールドがあるかどうかチェックします。何かがあなたの 'trial_end'値を上書きしているかもしれません。私たちはすべてのコードを表示していないと思います。 – lesssugar

+0

@lesssugarこれはすべてのコードです。 '$ request-> all()'はdie dumpにあります。 – Henry

答えて

0

はそれを考え出しました。解決策はinput()がその上data_getを行う前にgetInputSource()->all()all()にデータを追加するためだけにdata_getを行いget()のに対し、この作品

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

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

に変更しました入力パラメータ(事前変更)。

(アレックスによって提案された変更を伴う)新コード

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

新がこの問題に遭遇して他のものを助け

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

希望をもたらし。

+0

また、興味のある[this](https://stackoverflow.com/questions/30186169/laravel-request-input-orget-get)が見つかりました – Henry

0

問題は割り当てではなく、比較して、リクエストの値が設定されているかどうかを確認する個人的には最良の方法です。

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'); 
} 

挨拶

+0

これも機能しません。私は 'trial_end'フィールドを追加しようとしていません、私は単に既存の値を変更しようとしています。 '' test''はプレースホルダーです。 – Henry

+0

あなたのコードを修正し、マージ関数を使用しました。これはあなたが望むものですか? – alexalejandroem

+0

いいえこれは私のコードとは逆です。 – Henry

関連する問題