首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在所有其他规则都通过时才添加验证规则,或者停止对Laravel 5.7中的第一个错误的全部属性集进行验证

只有在所有其他规则都通过时才添加验证规则,或者停止对Laravel 5.7中的第一个错误的全部属性集进行验证
EN

Stack Overflow用户
提问于 2019-01-18 17:50:42
回答 1查看 1.2K关注 0票数 3

我希望允许用户在本地存储磁盘上创建一个文件夹。因此,发送给服务器的表单非常简单,有三个属性:

  1. new-folder-name -这是要创建的文件夹的名称,
  2. 相对路径-相对于资产根目录创建新目录的目录的路径,以及
  3. asset_id -资产的id,我需要这个id来获取资产的根目录。

问题是,当我验证这些属性时,我还需要检查用户要创建的文件夹是否已经存在。为此,我制定了一个名为FolderExists的规则。因此,在运行FolderExists之前,我必须确保所有其他规则都已成功通过,因为我的自定义规则应该接受FolderExistsasset_id,以便能够构建要检查的路径。

下面是我的rules()函数,我正在自定义表单请求中进行验证:

代码语言:javascript
复制
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

或者可能在验证器遇到第一个错误时停止整个验证?

两种选择在这里都应该是可以的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-22 08:38:57

我自己终于找到了解决办法。这就是我最后的下场。

为了达到预期的结果,我在定制表单请求的withValidator()方法中创建了另一个验证器,第二个验证器将只处理FolderExists规则,并且只在前面的验证失败时处理。

代码语言:javascript
复制
public function rules()
    {
        return [
            'asset-id' => ['bail', 'required', 'integer', 'exists:assets,id'],
            'relative-path' => ['bail', 'required', 'string'],
            'new-folder-name' => ['bail', 'required', 'string', 'min:3', 'max:150', new FolderName]
        ];
    }

public function withValidator($validator)
    {
        if (!$validator->fails())
        {
            $v = Validator::make($this->input(),[
                'new-folder-name' => [new FolderExists($this->input('asset-id'), $this->input('relative-path'))]
            ]);
            $v->validate();
        }
    }

如果我们的主验证器通过了,我们将创建另一个验证器,只传递带有其参数的FolderExists规则(这些参数已经被验证),并调用validate()方法。就这样。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54259129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档