【发布时间】:2019-06-13 00:32:46
【问题描述】:
我想允许用户在本地存储磁盘上创建一个文件夹。所以发送到服务器的表单比较简单,具有三个属性:
- new-folder-name - 这是要创建的文件夹的名称,
- relative-path - 相对于 asset 根目录创建新目录的目录路径,以及
- asset_id - asset的id,我需要这个id来获取asset的根目录。
问题是当我验证这些属性时,我还需要检查用户要创建的文件夹是否已经存在。为此,我制定了一条名为FolderExists 的规则。所以,在我运行 FolderExists 之前,我必须确保所有其他规则都已成功通过,因为我的自定义规则应该接受 relative-path 和 asset_id 才能构建检查的路径。
这是我的rules() 函数,我正在自定义表单请求中进行验证:
public function rules()
{
return [
'asset_id' => ['bail', 'required', 'exists:assets,id'],
'relative-path' => ['bail', 'required', 'string'],
'new-folder-name' => ['bail', 'required', 'string', 'min:3', new FolderName, new FolderExists($this->input('asset_id'), $this->input('relative-path')]
];
}
所以我的问题是:
只有当所有其他验证规则都通过时,是否可以添加FolderExists?
或者,当验证器遇到第一个错误时,可能会停止整个验证?
这两个选项都应该没问题。
谢谢!
【问题讨论】:
-
查看 required_if 条件:laravel.com/docs/5.7/validation#rule-required-if
-
应该是工作无法理解为什么会失败,你确定它失败了吗?并且您在验证时遇到所有三个错误而不是一个
-
@LouisR 谢谢,但我已经检查了文档,尤其是在此之前在这里写我的问题。关于
required_if的文档说“如果 anotherfield 字段等于任何 值,则验证中的字段必须存在且不为空。”我认为这不是我的情况。
标签: laravel validation laravel-5.7 customvalidator