Laravel Request facade未检测到多个提交按钮

时间:2017-05-01 17:45:33

标签: laravel blade laravel-5.4

我在表单中有两个提交按钮,我需要检测哪一个用于触发某个操作。不幸的是,我的检查没有检测到点击了哪个提交按钮:

形式:

<button type="submit" name="complete">
     <span class="btn-label">
         <i class="glyphicon glyphicon-save"></i>
     </span> Submit Audit
</button>

<button type="submit" name="pending">
    <span class="btn-label">
        <i class="glyphicon glyphicon-save"></i>
    </span> Save Audit
</button>

控制器:

public function updateAudit(Request $request, $id)
{
    ....

    if ($request->has('complete')) {
        $auditCompleteCheck->completed = 1;
        $auditCompleteCheck->save();
    }

}

如果我输出$request,我可以看到complete提交按钮为:"complete" => "",类似于待处理:"pending" => ""

但是,如果我dd($request->has('complete'));始终会返回false,即使我可以在请求包中看到它。

为什么->has检查不起作用?

非常感谢。

1 个答案:

答案 0 :(得分:3)

尝试为name元素的属性button设置相同的值,为属性value设置不同的值。

HTML部分:

<button type="submit" name="submit_audit" value="complete">
     <span class="btn-label">
         <i class="glyphicon glyphicon-save"></i>
     </span> Submit Audit
</button>

<button type="submit" name="submit_audit" value="pending">
    <span class="btn-label">
        <i class="glyphicon glyphicon-save"></i>
    </span> Save Audit
</button>

现在在您的控制器中,您可以执行以下操作:

if ($request->submit_audit === 'complete') {
    // Do something
}

if ($request->submit_audit === 'pending') {
    // Do something else
}