Сообщение формы Laravel - MethodNotAllowedHttpException - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь отправить форму в базу данных, но получаю следующую ошибку

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException, выдаваемое с сообщением

Форма заполняется данными и предназначается для почтового маршрута. По результатам исследований я обнаружил, что проблема заключается в публикации на маршруте получения, но маршрут, на который я нацеливаюсь, - это публикация.

Форма

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

Метод контроллера

  //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();
  }

Модель аренды

class Tenancy extends Model
{
    protected $fillable = ['tenant_id', 'landlord_id', 'property_address', 'accepted'];

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

Маршруты

Routes

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018
<form action="/account/tenancy/{{id}}" method="POST">

Попробуйте это

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Удалите косую черту после / {{id}} и убедитесь, что вы определили имя таблицы в модели.

0 голосов
/ 27 апреля 2018

Удалите косую черту из конца вашего URL в форме действия:

<form action="/account/tenancy/{{id}}" method="POST">

Использование: /account/tenancy/{{id}} вместо /account/tenancy/{{id}}/

и попробуй.

0 голосов
/ 27 апреля 2018

Вы используете неправильный метод. В соответствии с вашими маршрутами, измените ваш метод в вашей форме на GET.

...