表单复选框字段值未传递给Laravel控制器

时间:2017-11-13 13:51:07

标签: php forms laravel laravel-5

在我的注册表单中,我有一个复选框,用户可以接受该复选框以接收新闻稿。

create函数中,我想显示所有传递的数据:

protected function create(array $data)
{
    dd($data);
}

我的复选框字段的名称是newsletter。当我执行dd()时,我无法获得简报的价值,仅适用于:nameemailpassword

如果我将此简报添加到Validator,则会显示。

protected function validator(array $data)
{
    return Validator::make($data, [
        'name'       => 'required|max:255',
        'email'      => 'required|email|max:255|unique:users',
        'password'   => 'required|min:6|confirmed',
        'newsletter' => 'required',
    ]);
}

现在,当我dd()时,它已通过,但我不希望此复选框为required。它应该是可选的。我应该在Validator中更改某些内容还是?

2 个答案:

答案 0 :(得分:1)

您的function ActionButtonsCellRenderer() {} ActionButtonsCellRenderer.prototype.init = function(cellRenderParams) { var tempDiv = document.createElement('div'); var deleteButton = document.createElement("a"); deleteButton.href = "javascript:void(0)"; deleteButton.innerHTML = "<i class='fa fa-trash'></i>"; tempDiv.appendChild(deleteButton); deleteButton.addEventListener("click",function(){ cellRenderParams.api.updateRowData({remove: [cellRenderParams.data]}) }); this.eGui = tempDiv.firstChild; }; ActionButtonsCellRenderer.prototype.getGui = function() { return this.eGui; }; 字段是一个复选框。提交html表单并且未选中该复选框时,此字段将不会在发布的数据中可用。如果选中该复选框,则可以使用该复选框。这是默认的html行为,你无能为力。

要检查代码中是否已选中复选框,您可以使用以下内容:

function addRow() {
    var row = {t1 : "test"}

    dataSource[dataSource.length] = row;

    agGridOptions.api.setRowData(dataSource);
}

答案 1 :(得分:1)

无论后端如何,当未选中复选框时,其值将不会作为请求的一部分发送到服务器。这就是浏览器的工作方式,这就是为什么在转储请求时你不会看到[env:nodemcuv2] platform = espressif8266 board = nodemcuv2 framework = arduino upload_port = 192.168.1.108 lib_deps = ESPAsyncTCP@1.1.0 OneWire Time FauxmoESP Blynk DallasTemperature ArduinoJson Adafruit NeoPixel 字段的原因。

但是,当您使用Laravel的验证器并在规则中提及该字段时,Laravel会为您执行此操作并设置其值。要不进行此操作,请使用image: eclipse/platformio pipelines: branches: develop: - step: name: Build Project caches: # caches the depende - directories script: # Modify the commands below to build your repository. - pio ci --project-conf=./Code/UrbanAquarium.Firmware/platformio.ini ./Code/UrbanAquarium.Firmware/src - pwd definitions: caches: directories: ./Code/UrbanAquarium.Firmware/.piolibdeps 规则。

这样做只是为了转储数据。但是在实现真正的逻辑时,不是转储数据,而是希望利用给定的请求实例,Facade或helper,它将为不存在的参数返回一个假值。所以,没有添加额外的规则,你就没事了。

或者,您可以为newsletter字段设置默认值,确保数据不存在,新注册将以所需的默认状态发生。

顺便说一句,你想确保你的控制器方法接受sometimes实例而不是数组。