Маршруты Laravel не работают с параметрами - PullRequest
0 голосов
/ 25 июня 2019

Я объявил два маршрута laravel в web.php, но столкнулся с ошибкой 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. Я не могу понять, что не так?

1 Ответ

2 голосов
/ 25 июня 2019

Я вижу несколько проблем:

  • Согласно Документы Laravel , параметры маршрута:

    ... должен состоять из буквенных символов и не может содержать символ -. Вместо использования символа - используйте подчеркивание (_).

    Таким образом, имена параметров, такие как {user-id} и {tran-id}, не будут работать. Измените их на (например) {user_id} и {tran_id}.

  • Ваше определение маршрута включает в себя эти 2 параметра в URL:

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

    Когда вы генерируете маршрут, используя route(), вы должны дать ему 2 параметра с теми же именами. Но ваш код дает ему id:

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

    Вам нужно изменить это id на user-id или, учитывая вышеупомянутую проблему, user_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...