簡體   English   中英

Laravel路由無法使用參數

[英]Laravel routes are not working with parameters

我在web.php中聲明了兩個laravel路由,但是面臨404錯誤。

我想訪問控制器中的路由參數值,並且基於此選擇,我需要基於參數執行一些處理。

我的web.php代碼

Route::group(
        ['namespace' => 'Admin', 'prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['role:admin']],
        function () {
Route::get('transaction-verified/{user-id}/{tran-id}',['uses' => 'ForgotPassTranVerifyController@transaction_verified'])->name('transaction_verified');

});

我的控制器代碼

public function transaction_verified($id,$tran_id)
    {
        $user = User::find($id);
        if($user)
        {
            $user->status = 'active';
            $user->save();
            $response = $this->broker()->sendResetLink(
                $user->email
            );
            echo'<pre>'; print_r($response); exit;
            $transaction = ForgotPassFineTransaction::find($tran_id);
            if($transaction)
            {
                $transaction->status = 'valid';
                $transaction->save();
            }
            $this->message = true;
            return redirect(route('admin.transaction-verify'));
        }

這就是我所說的路線

return '<a href="' . route('admin.transaction_verified', ['id'=> $row->id, 'tran-id'=> $row->tran_id]) . '" class="btn btn-info btn-rectangle"
                      data-toggle="tooltip" data-original-title="Edit">Send Email</a>

我想訪問路線參數,並且基於參數需要完成一些任務。 但是我正面臨404錯誤。 我無法弄清楚哪里出了問題?

我可以看到一些問題:

  • 根據Laravel docs ,路由參數:

    ...應該由字母字符組成,並且不能包含-字符。 代替使用-字符,而使用下划線(_)。

    因此,諸如{user-id}{tran-id}類的參數名稱將不起作用。 將它們更改為(例如) {user_id}{tran_id}

  • 您的路線定義在URL中包含這兩個參數:

     .../{user-id}/{tran-id}... 

    使用route()生成路由時,必須給它提供兩個具有相同名稱的參數。 但是你的代碼給了它一個id

     ...['id'=> $row->id, 'tran-id'=> $row->tran_id]... 

    您需要將該id更改為user-id ,或者考慮上述問題user_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM