使用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
属性?这有点荒谬,不是吗?
答案 0 :(得分:33)
只需将disabled
更改为readonly
答案 1 :(得分:3)
依赖disabled
或readonly
等HTML标记是一个坏主意。用户可以轻松打开检查器并更改字段的值。不要在模板中公开这个,这是属于模型的业务逻辑!
您是否循环使用Input :: all()将字段保存到数据库中?如果是这样,你可以这样写:
$allowedFields = ["field1", "field2", "field3" ...];
foreach($allowedFields as $field) {
if(Input::has($field) {
$myEloquentModel->{$field} = Input::get($field);
}
}
$myEloquentModel->save();
好处:仅检查允许的字段,仅更新实际请求中的字段。