Я пытаюсь отправить форму в базу данных, но получаю следующую ошибку
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException thrown with message
Форма предварительно заполнена данными и предназначена для почтового маршрута. Из исследования я выяснил, что проблема связана с отправкой сообщения на маршрут получения, но маршрут, на который я нацелен, - это сообщение.
Форма
<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');
}
}
Маршруты
Вероятно, проблема в маршрутизации. Вставьте определения маршрута, а также результат, полученный от php artisan route:list.
Добавлено как изображение
В действии формы замените {id} на {{id}}. Надеюсь решит проблему.
Нет, это не работает. Хммммм
Вам нужно передать идентификатор в свое представление создания.
Я использую идентификатор пользователя. Которая уже передана через пользователя
Хорошо, но раньше здесь не говорилось "пользователь". Теперь у вас синтаксическая ошибка. {{$ user-> id} должно быть {{$ user-> id}}. Вам не хватает закрывающей фигурной скобки.
Это просто опечатка. В файле все нормально. Неважно, что я изменяю, это вызывает ту же ошибку. Есть ли проблема в методе магазина?
Чтобы объяснить проблему более подробно, не отображается идентификатор, который дает вам URL-адрес / account / tenancy /, который вы, вероятно, определили только как маршрут GET. Проверьте созданный HTML-код, чтобы убедиться, что к URL-адресу добавлен идентификатор.






Вы используете неправильный метод. В соответствии с вашими маршрутами измените метод в вашей форме на GET.
Но он отправляет данные в базу данных, поэтому это должен быть пост
Так что измени свой маршрут
<form action = "/account/tenancy/{{id}}" method = "POST">
Попробуй это
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tenancy extends Model
{
protected $table = 'tenancy';
--------------------
--------------------
}
Удалите косую черту после / {{id}} и убедитесь, что вы определили имя таблицы в модели.
Нет, этого не произошло.
Удалите косую черту после {{id}} и попробуйте / {{id}}. Для проблемы с именем таблицы я использую файл модели в качестве примера.
Удалите косую черту с конца URL-адреса в действии формы:
<form action = "/account/tenancy/{{id}}" method = "POST">
Используйте: /account/tenancy/{{id}} вместо /account/tenancy/{{id}}/
и попробовать.
Это решило проблему. Теперь я получаю еще одну ошибку. Но, по крайней мере, прогресс> Базовая таблица или представление не найдены: 1146 Таблица «rentable.tenancies» не существует
как называется ваш стол?
имя вашего стола должно быть «арендованные». Если нет, перезапишите имя вашей таблицы в модели. например, protected $ table = '***********';
Таблис назывался арендатором. У меня нигде не определены условия аренды afaik
Как я уже упоминал выше, замените имя вашей таблицы в модели. например, protected $ table = 'tenancy';
В Laravel имя модели должно быть в единственном числе, а имя таблицы - во множественном числе.
В противном случае есть возможность жестко привязать вашу таблицу к модели, как указано выше.
Эта ошибка обычно означает, что что-то не так с вашим определением маршрута. Можете показать, как вы объявляете свой маршрут в
web.php?