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

时间:2014-06-10 13:25:10

标签: php html laravel

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

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

但是,以下工作符合预期:

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

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

2 个答案:

答案 0 :(得分:33)

只需将disabled更改为readonly

即可

答案 1 :(得分:3)

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

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

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

好处:仅检查允许的字段,仅更新实际请求中的字段。