首页 > 解决方案 > 存储路径上的 Laravel 验证

问题描述

作为 Laravel 验证的示例:

$validatedData = $request->validate([
    'title' => ['required', 'unique:posts', 'max:255'],
    'body' => ['required'],
]);

我想在 storage 中添加路径是否存在。

Storage::exists('/path/to/your/directory');

基于此,我想做类似的事情:

 $validatedData = $request->validate([
        'title' => ['required', 'unique:posts', 'max:255'],
        'body' => ['required'],
        'path' => ['storage_file_exists_or_not']
    ]);

如何实现。谢谢。

标签: laravelvalidation

解决方案


您可以使用创建自定义规则

php artisan make:rule StorageFileExists

并在 pass 函数中指定您的条件并写下您的信息。

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Storage;

class StorageFileExists implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return (Storage::exists($value)) ? false : true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'File is present.';
    }
}

并像这样编写验证规则


$request->validate([
    'path'      =>  new StorageFileExists(), // your Rulename
]);


推荐阅读