Laravel 当我尝试保存字段时出现 MethodNotAllowedHttpException?

Laravel MethodNotAllowedHttpException when i try to save fields?

您好,我尝试通过 2 个步骤在数据库中保存字段,但我有 MethodNotAllowedHttpException

在我的控制器中的第 1 步,我将 2 个字段保存在数据库中

 public function storeNumber(Request $request){

    $number = new Number;
    $number->user_id = $user = \Auth::user()->id;
    $number->number = $this->getGeneratedNumber();
    $number = new Number($request->all());
    $number->save();
    return redirect('numbers/{id}/details');
}

查看

<form class="form-horizontal" method="POST" action="{{action('NumberController@storeNumber')}}">
{{ csrf_field() }}

<div class="form-group">
    <div class="col-md-12">
        <button type="submit" class="btn btn-primary btn-block">
            Generate Numbers
        </button>
    </div>
</div>

型号

 class Number extends Model

{ /** * @var 数组 * */ 受保护的 $fillable = [ 'number' ]; }

在第 2 步我想用同一个控制器在同一个数据库中保存另一个字段这是我的另一个存储功能,用于将另一个字段存储在同一个数据库中。但是当我尝试保存时 laravel 说 MethodNotAllowedHttpException.

public function store(Request $request, $id){

    $number = Number::find($id);
    $number = new Number($request->all());
    $number->save();
    return redirect('numbers');
}

这是我的看法

<form method="post" action="{{action('NumberController@store', $id)}}">
    {{csrf_field()}}
    <input name="_method" type="hidden" value="PATCH">

    <div class="form-group">
        <label for="number" class="control-label">Number</label>
        <input type="text" class="form-control form-control-lg disabled" placeholder="Number" name="number" value="{{$number->number}}">
    </div>
    <div class="form-group">
        <label for="comment" class="control-label">Comment</label>
        <textarea name="comment" class="form-control form-control-lg" cols="30" rows="10">{{$number->comment}}</textarea>
    </div>
    <div class="form-group">
        <label for="accept" class="control-label">Accept</label>
        <input type="radio" name="accept" value="1">Yes<br>
        <input type="radio" name="accept" value="0">No<br>
    </div>
    @if($number->accept == 1)
        <div class="form-group">
            <label for="name" class="control-label">Number</label>
            <input type="text" class="form-control form-control-lg disabled" placeholder="Name" name="name" value="{{$number->name}}">
        </div>
        <div class="form-group">
            <label for="city" class="control-label">City</label>
            <input type="text" class="form-control form-control-lg" placeholder="City" name="city" value="{{$number->city}}">
        </div>
        <div class="form-group">
            <label for="postcode" class="control-label">Postcode</label>
            <input type="number" class="form-control form-control-lg" placeholder="Postcode" name="postcode" value="{{$number->postcode}}">
        </div>
        <div class="form-group">
            <label for="address">Address</label>
            <textarea name="address" class="form-control form-control-lg" cols="30" rows="10">{{$number->address}}</textarea>
        </div>
    @else
        <p>TODO status for NO</p>
    @endif
    <div class="form-group">
        <div class="col-md-12">
            <button type="submit" class="btn btn-default">Finish</button>
        </div>
    </div>
</form>

更新内容请修改blade如下

<form method="post" action="{{action('NumberController@store', $id)}}">

<form method="post" action="{{action('NumberController@update', $id)}}">

您有一个包含 "PATCH" 值的“_method”,因此您必须将路由更改为 "patch" 而不是 "post"。

return redirect('numbers/{id}/details'); 

这里写错了,id是什么?