【发布时间】:2021-10-25 18:32:41
【问题描述】:
我使用 Laravel Collective 的表单上的提交按钮不起作用。按下提交后,表单刷新时表单信息保留,数据库中没有任何内容。根据生成的 HTML,它似乎并没有真正去路由,但我似乎无法弄清楚让它真正通过 'store' 路由。
create.blade.php:
{!! Form::open(['route' => 'items.store']) !!}
<div class="form-group">
{!! Form::submit('Submit') !!}
</div>
{!! Form::close() !!}
物品控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Item;
class ItemController extends Controller
{
public function store(Request $request)
{
$request->validate([
'item_name'=>'required',
'item_price'=> 'required|integer',
'item_category' => 'required',
'item_url' => 'required'
]);
$item = new Item([
'item_name' => $request->get('item_name'),
'item_price'=> $request->get('item_price'),
'item_category'=> $request->get('item_category'),
'item_url' => $request->get('item_url')
]);
$item->save();
return redirect('/items')->with('success', 'Item has been added');
}
}
web.php:
Route::resource('items', 'ItemController');
生成的 HTML:
<form method="POST" action="https://website.com/public/items" accept-charset="UTF-8"><input name="_token" type="hidden" value="...">
<div class="form-group">
<input type="submit" value="Submit">
</div>
</form>
【问题讨论】:
-
您可能想在此处进行更多故障排除。调出您的开发者控制台,并查看“网络”选项卡以确保它正在发布到正确的 URL,并获得正确的响应。尝试使用
Log::info();在您的商店功能中进行一些日志记录,并检查/storage/logs中的日志以获取结果。确保Item具有可填充的列,并且在返回成功之前确保$item具有 id。 -
尝试将您的操作表单更改为:
action="{{route('items.create')}}" -
我只能想到一个验证错误。旁注:最好使用
$request->input()作为文档中的示例而不是$request->get() -
@aynber 看起来试图将
item_price验证为整数(我从网上某处获得)是什么让事情发生了变化。感谢您提供有关如何记录事物的说明。这帮了很多忙。 -
请问您的 html 输入在哪里?