【问题标题】:Laravel I cannot get into ControllerLaravel 我无法进入控制器
【发布时间】:2022-01-09 16:38:11
【问题描述】:

storeClientRequest 无法触发,这里有什么错误吗?当我点击提交时,页面显示404 Not found

表格

  <form class="needs-validation" novalidate method="POST" action="store-client-request/{{ Auth::user()->id }}">
    @csrf
        //////content
  </form>

路线

Route::group(['prefix'=>'user', 'middleware'=>['isUser','auth']], function(){

    Route::post('store-client-request/{user}', [UserController::class, 'storeClientRequest']);
});

控制器

function storeClientRequest(User $user)
{
    dd('hi');
    return redirect()->back()->with("message", "Create request successfully");
}

【问题讨论】:

  • 由于路线在一个组中 - 你试过/user/store-client-request/...
  • 我还建议您命名您的路线,并使用 route() 助手而不是静态表单操作。

标签: php html laravel


【解决方案1】:
  1. 为您的路线添加名称:

    Route::post('store-client-request/{user}', [UserController::class, 'storeClientRequest'])->name("store.client.request");
    
  2. 确保你运行

    php artisan optimize
    
  3. 在开始的表单标签中按名称引用您的路线:

    action="{{ route('store.client.request', ['user' => Auth::user()->id]) }}">
    

这样,(a) 路由前缀是什么(看起来您似乎忘记包含了)或 (b) 路由的地址是否在后面发生更改 - {{ route() }} 刀片指令将始终拉入正确的 URL 以及相关参数。

【讨论】:

  • 是的!这是最好的选择。这样,如果路由配置更改,则 url 会更改。
【解决方案2】:

正如我通过您的代码看到的那样:您的完整路线是 /user/store-client-request/{user}

因此,你应该采取行动

<form class="needs-validation" novalidate method="POST" action="/user/store-client-request/{{ Auth::user()->id }}">
@csrf
    //////content

【讨论】:

  • 这会解决问题,但不是最好的方法。
【解决方案3】:

在您的路线中有 /user/store-client-request/{user}

所以在你的操作中添加这个

   <form class="needs-validation" novalidate method="POST" action="/user/store-client-request/{{ Auth::user()->id }}">

  </form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2021-04-03
    • 2018-12-01
    相关资源
    最近更新 更多