【发布时间】:2021-11-30 22:30:51
【问题描述】:
当我尝试使用 create 方法将某些内容上传到数据库时,它不会存储在数据库中。看起来页面刚刚刷新。我对 Laravel 还很陌生,因此我们将不胜感激。
下面我分别提供了我的刀片视图的顶部、我的路线和我的控制器。有人可以帮助我吗?我搜索了许多其他主题,但找不到我的问题的解决方案。
@extends('layouts.app')
@section('content')
<div class="container">
<form action="/module" enctype="multipart/form-data" method="POST">
@csrf
<div class="row">
<div class="col-8 offset-2">
<div class="row"><h3>Add New Module</h3></div>
<div class="form-group row">
<label for="title" class="col-md-4 col-form-label">Module Title</label>
<input id="title"
type="text"
class="form-control @error('title') is-invalid @enderror"
name="title"
value="{{ old('title') }}"
autocomplete="title" autofocus>
@error('title')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group row">
<label for="category" class="col-md-4 col-form-label">Category</label>
<select id="category" onchange="getCategories()" class=" mt-1 block w-full py-2 px-3 border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm p-1.5 px-3 border-2 @error('category') border-red-500 @enderror">
<option disabled selected value> -- Kies één van de opties -- </option>
<option value="Schil">Schil</option>
<option value="Afbouw">Afbouw</option>
<option value="Installatie">Installatie</option>
<option value="Afwerking">Afwerking</option>
</select>
@error('category')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
路线:
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/module/create', 'App\Http\Controllers\ModulesController@create');
Route::post('/module', 'App\Http\Controllers\ModulesController@store');
控制器:
class ModulesController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function create()
{
return view('modules/create');
}
public function store()
{
$data = request()->validate([
'title' => ['required', 'string', 'max:50'],
'description' => ['required', 'string', 'max:255'],
'price' => ['required', 'string'],
'category' => ['required', 'string'],
'subcategory' => ['required', 'string'],
'image' => ['required', 'image'],
]);
auth()->user()->modules()->create($data);
}
}
【问题讨论】:
-
您是否尝试在操作字段中输入“{{route('module')}}”?也不需要@method('POST'),因为您已经在方法字段中告诉表单应如何发送请求。
-
它在哪里显示错误:在 PhpStorm 或实际网站上(所以这是 Laravel 运行时错误)?
-
@LazyOne 在浏览器中显示错误
-
您在哪个 URL 上收到错误消息?你做了什么来得到那个 URL 和错误?
-
当我尝试转到“127.0.0.1:8000/module”时,它显示以下错误:“Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 GET 方法。支持的方法:POST。”