Laravel使用空值发布的前输入字段显示旧(原始)值而不是空输入字段

时间:2014-07-04 13:02:32

标签: laravel

我在使用Laravel的Former插件时遇到了一些麻烦,无法处理表格和字段。

用例是给定模型的"编辑" -form。

Former::text('title')
  ->label('Title')
  ->value( $title );

Former::text('description')
  ->label('Description')
  ->value( $description );

规则:

  • 标题必须始终存在且至少10个字符。
  • 说明可能为空。

预期行为:

加载修改表单时,我希望表单在字段中显示$title$description的值。

每次提交包含无效字段值的表单时,我都希望提交的值显示在字段中,而不是$title$description的值。

问题:

仅在提交非空字符串时才有效!

提交空字符串时,就像前者处理它一样,即使已经提交了字段,因此使用$title$description给出的值代替。

我认为Former能够做到这一点" smart",并且仅当发布的数据不包含该字段时才取value($variable)值。但似乎Former在提交为空时也采用了变量值。

为什么这是一个问题?

想象一下,您编辑了这两个字段,并且实际上想要更改title并完全删除description,这根据规则有效。然后,由于您输入的title太短,验证没有通过,而title会将新的(太短)title作为字段值,而description } value将回退到$description变量的值,而不是显示已发布的空字段。

感觉$_POST['description'] = ""被视为$_POST['description'] = nullnot set - 即使空字段是帖子的一部分。

1 个答案:

答案 0 :(得分:0)

在你看来

//replace
Former::text('title')
->label('Title')
->value( $title );

//with
Former::text('title')
->label('Title')

......并在您的控制器中

//add  
Former::populate($model);

$ model beeing有问题的模型:) $ model-> title必须存在并且与原始代码中的$ title具有相同的值。

如果您使用 - > value($ somevalue)与Former,则总是会使用$ somevalue。