我有以下表格:
<form action="{{ route('admin.blocks.store', [$page->id]) }}" method="post">
<fieldset>
<div>
<input id="block--page-id" name="page_id" type="text" disabled value="{{ $page->id }}">
<lable for="block--page-id">Page ID</lable>
</div>
<div>
<input id="block--name" name="name" type="text">
<label for="block--name">Name</label>
</div>
<div>
<input id="block--description" name="description" type="text">
<label for="block--description">Description</label>
</div>
<div>
<input id="block--key" name="key" type="text">
<label for="block--key">Key</label>
</div>
<div>
<textarea id="block--value" name="value">
</textarea>
<label for="block--value">Value</label>
</div>
<div>
<button type="submit">Create</button>
</div>
{{ csrf_field()}}
</fieldset>
使用以下控制器:
public function blocksStore(Request $request, $pageId)
{
$block = new PageBlock();
$block->page_id = $request->input('page_id');
$block->name = $request->input('name');
$block->description = $request->input('description');
$block->key = $request->input('key');
$block->value = $request->input('value');
$block->save();
return redirect('admin.pages.edit', [$pageId]);
}
但是,我对page_id
的输入并未传递到请求中。所有其他输入工作正常,所以我不确定还有什么可能是错误的。
答案 0 :(得分:1)
将表单操作更改为:
<form action="{{ route('admin.blocks.store', ['page_id'=> $page->id]) }}" method="post">
假设您的路线定义为:
Route::post('/your_url/{page_id}', 'SomeController@store')->name('admin.blocks.store');
在您的控制器代码中,您不需要从请求中获取$pageId
,因为它已作为路由参数存在。
public function blocksStore(Request $request, $pageId)
{
$block = new PageBlock();
$block->page_id = $pageId;
$block->save();
return redirect('admin.pages.edit', [$pageId]);
}
答案 1 :(得分:1)
因为元素是disabled
,所以不会提交。因此,将其更改为type="hidden"
:
<input id="block--page-id" name="page_id" type="hidden" value="{{ $page->id }}">