具有用于库存的表单控制器,人们可以在其中创建项目时添加项目以及添加账单,手册等。我的问题是,我也想获得一个文件名(例如,上载文件的账单),但是如果他们确实在表格中选择了文件,我只想要它。
我的代码现在看起来像这样:
我尝试了一切,例如required_unless,required_if,但没有任何效果。也许我做错了,或者我的想法不适用于此验证规则?
控制器中的验证:
public function save(Request $request)
{
$validatedData = $request->validate([
'file' => 'nullable|file',
'files_label' => 'required_unless:file,empty|string',
]);
我的html中的错误消息是: files_label必须是字符串(所以我想它仍然是必需的)...
我的刀片看起来像这样
<input class="form--textinput" name="files_label" id="files_label" value="{{old('files_label')}}">
<input type="file" class="custom-file" name="file" id="file" value="{{old('file')}}">
如果我选择要上传的文件,我只需要file_label怎么办?
更新1:也使用type =“ text”进行了尝试。仍然出现错误:“文件标签必须是字符串。”
更新2:因此,我删除了类型要求“字符串”,现在看起来像是可以使用。他不希望files_label字段为字符串。 required_unless现在也可以正常工作了。有人可以告诉我为什么会这样吗?如果根本不需要该字段,为什么他要一个字符串?
代码现在看起来像这样:
'file' => 'nullable|file',
'files_label' => 'required_unless:file,',
答案 0 :(得分:0)
在这种情况下,我认为您需要required_with
。像这样
$validatedData = $request->validate([
'file' => 'nullable|file',
'files_label' => 'required_with:file,empty|string',
]);