Laravel表单输入缺少请求

时间:2018-02-04 13:22:42

标签: laravel laravel-5

我有以下表格:

<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的输入并未传递到请求中。所有其他输入工作正常,所以我不确定还有什么可能是错误的。

2 个答案:

答案 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 }}">