【问题标题】:How to update laravel 5.2 user edit form by using patch method如何使用补丁方法更新 laravel 5.2 用户编辑表单
【发布时间】:2016-12-19 15:59:05
【问题描述】:

我正在关注 jeffrey 的 laravel 教程。但是我在更新表单时遇到了问题。我正在获取所有表单字段,但是在更新时显示找不到该页面。我已经尝试了很多 jeffrey 告诉如何在 5.2 中更新表单的方法

https://laracasts.com/series/laravel-5-from-scratch

<form action="form/{{$user->id}}" method="POST">
{{method_field("PATCH")}}
        <label for="name">Name</label>
        <input type="text" name="name" value="{{$user->name}}">
        <label for="email">Email</label>
        <input type="text" name="email" value="{{$user->email}}">

        <label for=""></label>
        <input type="submit" value="Submit" name="submit">
    </form>

this is routes
Route::get("form/{id}/edit", "you@edit");
Route::patch("form/{user}", "you@update");

This is my controller 

public function edit($id)
    {
        $user = laravel::findorfail($id);
        return view("form", compact("user"));
    }

    public function update(Request $request, User $user)
    {
        $user->update($request->all());
    }

Thank you in advance.

【问题讨论】:

  • 如果您目前在/form 并且您正尝试将表单提交给/form/{id},我认为您的操作应该是/form/{{$user-&gt;id}}。否则它实际上是提交给/form/form/{id}

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-routing


【解决方案1】:

尝试运行php artisan route:clear

您还需要添加带有 CSRF 令牌的字段。这是来自documentation 的示例:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

【讨论】:

  • you 中的you@update 是什么?它应该是那里的控制器名称。如果您运行php artisan route:list,您会在列表中看到该路线吗?如果您在那里没有看到它,请尝试运行php artisan route:clear,然后再次运行php artisan route:list
  • 你只是我的控制器名称。很简单,我叫你
【解决方案2】:

正如我所看到的,form/form/{id} 的路由问题是因为您的表单操作路由。为了避免这种情况,在路径前添加/,那么最终路径将是/form/{id}。另一种方法是从路径中删除 form/ 单词并保留 {id}

解释一下当您添加/ 和创建绝对路径的路线开始时发生的情况,但如果您在没有/ 的情况下启动路径,那么您使用的是相对路径,这意味着该路径将取决于当前的应用程序 url。

避免此类事情的最佳方法是使用命名路由。我总是尝试使用它们。

【讨论】:

    【解决方案3】:

    最终我找到了解决方案。

    路由补丁应该是:

    Route::patch("form/{user}", "you@update");
    

    但实际上应该是这样的:

    Route::patch("form/form/{id}", "you@update");
    

    更新控制器应该是这样的:

    public function update(Request $request, $id)
    {
        $user = laravel::find($id);
        $user->update($request->all());
        return "sucess";
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 1970-01-01
      • 2021-07-26
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2015-07-08
      相关资源
      最近更新 更多