在Laravel 5中重定向循环

时间:2018-03-09 18:40:04

标签: php laravel

在学习Laravel的同时,我正在网站的后端。我在下面有这些路由器:

Route::get('/update/survivor/flag', 'SurvivorsController@flagSurvivor');

Route::get('/submit/log/flag', 'LogsController@submitFlag');

在flagSurvivor函数中我有:

public function flagSurvivor(Request $request){
    $this->validate($request,[
        'idFlagged'      =>  'required',
        'idFlagger'      =>  'required'
    ]);
    //Get the ids
    $id = $request->input('idFlagged');
    $flaggerid = $request->input('idFlagger');

    //Get the flagger name
    $survivors = Survivor::all();;
    $flaggerSurvivor = $survivors->find($flaggerid);

    //Flag a survivor
    $survivors = Survivor::all();;
    $flaggedSurvivor = $survivors->find($id);
    $flaggedSurvivor->flags = $flaggedSurvivor->flags+1;

    //Save updates
    $flaggedSurvivor->save();

    //Redirect
    return redirect('submit/log/flag')
        ->with('nameFlagged', $flaggedSurvivor->name)
        ->with('idFlagged', $id)
        ->with('nameFlagger', $flaggerSurvivor->name)
        ->with('idFlagger' , $flaggerid);
}
除了重定向部分之外,

完美地工作。将更改插入到DB后,它应该将数据发送到submitFlag函数,但它不会。它只是一直循环,直到它从太多的重定向崩溃。日志提交页面也可以正常工作:

public function submitFlag(Request $request){
    $this->validate($request,[
        'nameFlagged'      =>  'required',
        'nameFlagger'      =>  'required',
        'idFlagger'        =>  'required',
        'idFlagged'        =>  'required'
    ]);
    $flaggerid = $request->input('idFlagger');
    $flaggedid = $request->input('idFlagged');
    $flaggername = $request->input('nameFlagger');
    $flaggedname = $request->input('nameFlagged');
    //Create a new log
    $flag = new Log;
    $flag->log = "The survivor $flaggername($flaggerid) reported that the survivor $flaggedname($flaggedid) is contaminated";
    //Save log
    $flag->save();
    echo "Success";
}

如果我去

localhost/submit/log/flag?idFlagger=1&idFlagged=2&nameFlagger=Matheus&nameFlagged=Tauan

它回应“成功”并将日志插入到数据库中。但我只是不明白为什么它不能通过发送flagSurvivor函数中的参数。我假设我在重定向中做错了,或者在我不知道的路线中有些东西。任何帮助表示赞赏!

事实证明,使用

return redirect('submit/log/flag?nameFlagged='.$flaggedSurvivor->name.'&idFlagged='.$id.'&nameFlagger='.$flaggerSurvivor->name.'&idFlagger='.$flaggerid);

而不是'我使用的'正常工作。

1 个答案:

答案 0 :(得分:1)

将您的redirect更改为操作,将with's更改为关联数组:

//Redirect
return redirect()->action('LogsController@submitFlag', [
    'nameFlagged' => $flaggedSurvivor->name,
    'idFlagged' => $id,
    'nameFlagger' => $flaggerSurvivor->name,
    'idFlagger' => $flaggerid
]);

Redirecting to a controller action