繁体   English   中英

Laravel 命名路由未定义时

[英]Laravel named route not defined when it is

我正在做一个表格,用户可以在其中授权或拒绝askedRapport 这里是:

askRapportShow.blade.php刀片视图:

<form action="{{route('authorize', $askedRapport->id)}}" method="POST">
    <div class="form-group">
      <textarea class="form-control" placeholder="Message"></textarea> <br>
      <button type="submit" formaction="{{route('authorize', $askedRapport->id)}}" class="btn btn-success">Autoriser</button>
      <button type="submit" formaction="{{route('refuse', $askedRapport->id)}}" class="btn btn-danger">Refuser</button>
    </div>
</form>

web.php文件中的路由定义:

// RAPPORT ASKING MANAGEMENT
Route::post('askedRapport/{id}', 'manageAskedRapportController@authorize')->name('authorize');
Route::post('askedRapport/{id}', 'manageAskedRapportController@refuse')->name('refuse');
// RAPPORT ASKING MANAGEMENT--END

和控制器manageAskedRapportController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class manageAskedRapportController extends Controller
{

    public function authorize($id){
        return view('welcome');
    }

    public function refuse($id){
        return view('unauthorized');
    }
}

虽然我认为路线定义得很好,但我仍然收到此错误: 在此处输入图片说明

有人明白我为什么会遇到这个问题吗? 非常欢迎任何帮助

编辑

如果这有帮助,当我输入php artisan route:list命令时,这就是我得到的:

   ErrorException  : Declaration of App\Http\Controllers\manageAskedRapportController::authorize($id) should be compatible with App\Http\Controllers\Controller::authorize($ability, $arguments = Array)

  at C:\xampp\htdocs\monapp\app\Http\Controllers\manageAskedRapportController.php:17
    13|
    14|     public function refuse($id){
    15|         return view('unauthorized');
    16|     }
  > 17| }
    18|

  Exception trace:

  1   Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Declaration of App\Http\Controllers\manageAskedRapportController::authorize($id) should be compatible with App\Http\Controllers\Controller::authorize($ability, $arguments = Array)", "C:\xampp\htdocs\monapp\app\Http\Controllers\manageAskedRapportController.php", ["C:\xampp\htdocs\monapp\vendor\composer/../../app\Http\Controllers\manageAskedRapportController.php"])
      C:\xampp\htdocs\monapp\vendor\composer\ClassLoader.php:444

  2   include()
      C:\xampp\htdocs\monapp\vendor\composer\ClassLoader.php:444

  Please use the argument -v to see more details.

更改路线并尝试。我认为第二条路线会覆盖第一条路线。因此,当您尝试使用第一条路线时,laravel 可能会显示route not found exception

Route::post('askedRapport/{id}/authorize', 'manageAskedRapportController@authorize')->name('authorize');
Route::post('askedRapport/{id}/refuse', 'manageAskedRapportController@refuse')->name('refuse');

表单动作路由定义为

<form action="{{route('authorize'), [$askedRapport->id] }}" method="POST">

我认为您的问题出在斜杠/

尝试像这样定义路由:

Route::post('/askedRapport/{id}', 'manageAskedRapportController@authorize')->name('authorize');
Route::post('/askedRapport/{id}', 'manageAskedRapportController@refuse')->name('refuse');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM