首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel表单后- MethodNotAllowedHttpException

Laravel表单后- MethodNotAllowedHttpException
EN

Stack Overflow用户
提问于 2018-04-27 11:32:26
回答 3查看 1.1K关注 0票数 1

我正在尝试将表单发布到数据库,但我得到了以下错误

消息引发的Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

表单预先填充了数据,并以一个post路由为目标。从研究中,我发现问题是从发帖到一个get路线,但我的目标路线是一个帖子。

表单

代码语言:javascript
复制
 <form action="/account/tenancy/{{$user->id}/" method="POST">
              {{ csrf_field() }}
              <div class="row">
                <div class="col-md-6">
                  <label for="property_address">Property Address</label>
                </div> <!-- ./col6 -->
              </div> <!-- ./ row-6 -->
              <div class="row">
                <div class="col-md-10">
                  <select class="form-control" id="property_address" name="property_address">
                    <!--Gets all counties from DB -->
                    @foreach ($properties as $property)
                      <option value={{$property->id}}>{{$property->address . ', ' . $property->town . ', ' . $property->county}}</option>
                    @endforeach
                  </select>
                </div> <!-- ./ col-6-->
              </div> <!-- ./ row-5  -->
              <div class="row mt-2">
                <div class="col-md-6">
                  <label for="landlord-name">Landlord Name</label>
                </div> <!-- ./col=6 -->
              </div> <!-- ./ row-4-->
              <div class="row">
                <div class="col-md-6">
                  <select class="form-control" name="landlord-name">
                    <option value="{{Auth::user()->name}}">{{Auth::user()->name}}</option>
                  </select>
                </div> <!-- ./ row 3-->
              </div> <!-- ./col-3 -->
              <div class="row mt-2">
                <div class="col-md-6">
                  <label for="tenand-name">Tenant Name</label>
                </div> <!-- ./col=6 -->
              </div> <!-- ./ row-4-->
              <div class="row">
                <div class="col-md-6">
                  <select class="form-control" name="tenant-name">
                    <option value="{{$user->name}}">{{$user->name}}</option>
                  </select>
                </div> <!-- ./ row 3-->
              </div> <!-- ./col-3 -->
              <button class="mt-2 btn btn-primary" type="submit">Create Tenancy</button>
            </form> <!-- ./form -->

控制器方法

代码语言:javascript
复制
  //Renders Form
  public function create($id){
    $user = User::where('id', $id)->first();
    $properties = PropertyAdvert::where('user_id', Auth::id())->get();

    return view('/pages/account/tenancy/create', compact('user', 'properties'));
  }

  //Stores data
  public function store(Request $request){
    $Tenancy = Tenancy::create([
      'tenant_id' => $request->user_id,
      'landlord_id' => Auth::id(),
      'property_address' => $request->property_address
    ]);

    return back();
  }

租赁模式

代码语言:javascript
复制
class Tenancy extends Model
{
    protected $fillable = ['tenant_id', 'landlord_id', 'property_address', 'accepted'];

    public function user(){
        return $this->belongsTo('App\User');
      }
}

路线

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-27 12:48:30

在表单操作中,从url的末尾移除Slash:

代码语言:javascript
复制
<form action="/account/tenancy/{{id}}" method="POST">

使用:/account/tenancy/{{id}}而不是/account/tenancy/{{id}}/

试一试。

票数 1
EN

Stack Overflow用户

发布于 2018-04-27 11:54:18

你用错了方法。按照您的路线,将您的方法以您的形式更改为GET。

票数 0
EN

Stack Overflow用户

发布于 2018-04-27 12:08:34

代码语言:javascript
复制
<form action="/account/tenancy/{{id}}" method="POST">

尝尝这个

代码语言:javascript
复制
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tenancy extends Model
{
    protected $table = 'tenancy';
    --------------------
    --------------------
}

在/{id}之后删除斜杠,并确保在模型中定义了表名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50061513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档