【发布时间】:2014-07-04 13:02:32
【问题描述】:
我在使用 Laravel 的Former 插件来处理表单和字段时遇到了一些问题。
用例是给定模型的“编辑”表单。
Former::text('title')
->label('Title')
->value( $title );
Former::text('description')
->label('Description')
->value( $description );
规则:
- 标题必须始终存在且长度至少为 10 个字符。
- 说明可能为空。
预期行为:
加载编辑表单时,我希望表单在字段中显示$title 和$description 的值。
每当提交包含无效字段值的表单时,我希望提交的值会显示在字段中,而不是 $title 和 $description 的值。
问题:
这仅在提交非空字符串时有效!
当提交一个空字符串时,它就像Former处理它一样,甚至还没有提交,因此使用$title或$description给出的值来代替。
我认为Former 能够做到这一点“聪明”,并且仅当发布的数据不包含该字段时才采用value($variable) 值。但是当提交为空时,Former 似乎也在获取变量值。
为什么会出现这个问题?
假设您编辑了这两个字段,并且实际上想要更改 title 并完全删除 description,根据规则这是有效的。然后,因为你输入了一个太短的title,验证没有通过,title 将得到新的(太短的)title 作为字段值,而description 值将回退到该值$description 变量,而不是显示已发布的空字段。
感觉就像$_POST['description'] = "" 被视为$_POST['description'] = null 或not set - 即使空字段是帖子的一部分。
【问题讨论】:
标签: laravel