我正在学习laravel 5.4。我知道有一个新的全局中间件将请求输入空字符串转换为null。但我有一个问题,网址如:http://localhost/choosePlan?type=1
。我在控制器操作中获得了类型归档值。如果在请求输入中没有提交类型或者值为空,我想将默认类型值设置为1.因此,在我的控制器操作中,我这样写:
$type = $request->input('type',1);
只有我访问http://localhost/choosePlan
我才能获得类型默认值。如果我访问http://localhost/choosePlan?type
或http://localhost/choosePlan?type=
,我仍然会获得类型为null。所以我认为输入法的默认值只有在请求体中没有字段名称时才能正常工作吗?我怎样才能解决上述问题?像Determ类型是null然后将其设置为默认值1?我无法禁用ConvertEmptyStringsToNull中间件,因为它在其他地方使用。感谢。
更新:我只是测试禁用ConvertEmptyStringsToNull中间件现在我得到的类型是空字符串。也许我误解了这个方法,我认为默认值仅适用于请求中不存在的指定字段,而不是请求中存在的字段名称,但值为空,是吗?哦,天啊,这意味着我也在Laravel 5.2中误解了它。
答案 0 :(得分:4)
如果您想以编程方式添加默认值而无需禁用ConvertEmptyStringsToNullyou
,则可以执行以下操作:
$type = $request->input('type') ?: 1; // You can set whatever value you want
答案 1 :(得分:0)
您可以将默认值作为第二个参数传递给输入法。如果请求中没有请求的输入值,则将返回此值:
$name = $request->input('name', 'Sally');