控制器方法传递的第二个参数必须是Request的实例,但没有给出。

3
我将尝试在控制器中传递两个日期给另一个视图,但是我遇到了以下错误:Argument 2 passed to App\Http\Controllers\GuestController::reservationToGuest() must be an instance of Illuminate\Http\Request, none given。
这是我的第一个视图(拥有日期):
<form action="{{ route('create_guest') }}">                                            
    {{ csrf_field() }}
    <input type="hidden" value="2016-08-26" name="dateOne">
    <input type="hidden" value="2016-08-28" name="dateTwo">
    <button class="btn btn-block btn-success">Proceed To Check In</button>
</form>

(dateOne和dateTwo是我想要在第二个视图中的日期)
routes.php
Route::get('/guest_page/create/{idreservation?}',[
    'uses' => 'GuestController@reservationToGuest',
    'as' => 'create_guest'
]);

在GuestController中的reservationToGuest

public function reservationToGuest($idreservation = null, Request $request){
    if($idreservation === null){
        return view('guest_page_create', ['idreservation' => 0, 'page_title' => 'Guest Check In', 'check_in_date' => $request['dateOne']]);

    } else{ //else clause works just fine and the dates from the database are inserted into the view
        $details = DB::table('reservation')
            ->where('idreservation', $idreservation)
            ->get();

        return view('guest_page_create', ['idreservation' => $idreservation, 'details' => $details, 'page_title' => 'Guest Check In']);
    }
}

在视图“guest_page_create”中

<label for="datemask">Check In Date</label>
<input type="date" class="form-control" id="datemask" name="datemask" value="{{ $check_in_date }}">
1个回答

6

在传递必需参数之前,不应该传递可选参数。请尝试以下方法:

public function reservationToGuest(Request $request, $idreservation = null)
{
    // ...
}

非常感谢。那解决了问题。一旦网站允许,我会接受您的答案。我不知道在非可选参数后必须传递可选参数。再次感谢。 - user9492428
确实,这个方法可行,但我仍然惊讶于在我的一些Laravel项目中它可以不需要任何特定的顺序就能正常工作。 - Oluwatobi Samuel Omisakin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接