【问题标题】:Laravel MethodNotAllowedHttpException when i try to save fields?当我尝试保存字段时,Laravel MethodNotAllowedHttpException?
【发布时间】:2017-10-08 09:49:51
【问题描述】:

嗨,我尝试将字段保存在 db ot 2 步骤中,但我有 MethodNotAllowedHttpException

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

 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 = [ '数字' ]; }

在第 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>

【问题讨论】:

  • 你的路由文件里有什么?您的表单应该有一个 POST 路由。
  • 是的,我发布了 2 种方法的路线。我尝试在不同页面的 db 中的一个表中保存具有 2 种方法的字段

标签: php laravel laravel-5 laravel-5.2 laravel-5.3


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    请更改刀片更新内容如下

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

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

    【讨论】:

    【解决方案3】:
    return redirect('numbers/{id}/details'); 
    

    这里不正确,id是什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多