【发布时间】:2022-01-04 00:11:20
【问题描述】:
所以我有一个 Laravel 表单来收集数据,我使用相同的表单来创建和更新表格。问题是我只想在输入字段包含数据时对其进行验证,这是我的验证逻辑。
$validated = $request->validate([
'site_name' => 'sometimes|string',
'site_email' => 'sometimes|email',
'site_keywords' => 'sometimes|string',
'site_description' => 'sometimes|string',
'site_acronym' => 'sometimes|string|max:7',
'site_favicon' => 'sometimes|mimes:jpg,png,jpeg,svg',
'site_logo' => 'sometimes||mimes:jpg,png,jpeg,svg',
'site_currency' => 'sometimes|string',
'site_currency_symbol' => 'sometimes|string',
]);
但是当表单被提交时,laravel 会返回一个空输入字段的错误,例如它会返回一个错误,例如 "The site name must be a string."对于第一个验证规则。
请问我做错了什么?
编辑
所以我接受了@roj-vroemen 的建议,并使用可空验证规则修改了我的代码,现在它工作得很好。 这是新的代码块
$validated = $request->validate([
'site_name' => 'string|nullable|sometimes',
'site_email' => 'email|nullable|sometimes',
'site_keywords' => 'string|nullable|sometimes',
'site_description' => 'string|nullable|sometimes',
'site_acronym' => 'string|nullable|sometimes|max:7',
'site_favicon' => 'mimes:jpg,png,jpeg,svg|nullable|sometimes',
'site_logo' => 'mimes:jpg,png,jpeg,svg|nullable|sometimes',
'site_currency' => 'string|nullable|sometimes',
'site_currency_symbol' => 'string|nullable|sometimes',
]);
【问题讨论】:
-
您是否使用javascript提交表单?
-
不,没有javascript,它是普通刀片。
-
你试过可以为空吗?
-
如果字段为
null,您是否只想通过验证,或者您还想从validated数组中删除它?
标签: laravel validation laravel-8