Laravel 的 Input:all() 忽略禁用的输入

2022-08-31 00:04:49

在var_dumping Laravel 4 的内容时,我注意到框架忽略了使用以下代码生成的输入:Input:all()

{{ Form::text('departure', 'Departure', array('class' => 'form-control', 'disabled')) }}

但以下内容按预期工作:

{{ Form::text('departure', 'Departure', array('class' => 'form-control')) }}

我有充分的理由禁用用户弄乱此输入字段中的内容。然而,我需要将其保存在数据库中。我应该怎么做?在用户提交表单时使用 jQuery 禁用该属性?这有点荒谬,不是吗?disabled


答案 1

只需更改为disabledreadonly


答案 2

依赖 HTML 标志(如 或 )是一个坏主意。用户可以轻松打开检查器并更改字段的值。不要在模板中公开这个,这是属于模型的业务逻辑!disabledreadonly

您是否正在循环使用 Input::all() 将字段保存到数据库中?如果是这样,你可以这样写:

$allowedFields = ["field1", "field2", "field3" ...];
foreach($allowedFields as $field) {
    if(Input::has($field) {
        $myEloquentModel->{$field} = Input::get($field);
    }
}
$myEloquentModel->save();

优点:仅检查允许的字段,仅更新实际请求中的当前字段。


推荐