首页 > 后端开发 > php教程 > laravel的动态形式验证

laravel的动态形式验证

James Robert Taylor
发布: 2025-03-06 02:07:09
原创
822 人浏览过

Dynamic Form Validation in Laravel with prohibited_if

laravel'sprohibited_if验证规则简化了处理相互依赖的表单字段。 该规则根据其他字段的值优雅地限制了字段输入,增强了动态形式验证。

理解prohibited_if

>规则确保如果满足条件,则确保特定字段保持空。这对于具有互连字段的动态形式特别有用。prohibited_if>

>示例:

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
    'freelance_company' => 'prohibited_if:type,individual',
    'type' => 'required|in:individual,business'
]);
登录后复制

现实世界应用程序:会员注册>

考虑专业会员注册系统:

<?php namespace App\Http\Controllers;

use App\Models\Membership;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;

class MembershipController extends Controller
{
    public function store(Request $request)
    {
        $request->validate([
            'membership_type' => 'required|in:personal,corporate',
            'full_name' => 'required|string|max:255',
            'organization_name' => [
                'prohibited_if:membership_type,personal',
                'required_if:membership_type,corporate',
                'string',
                'max:255',
            ],
            'organization_size' => [
                'prohibited_if:membership_type,personal',
                'required_if:membership_type,corporate',
                'integer',
                'min:1',
            ],
            'tax_id' => [
                Rule::prohibitedIf(fn() =>
                    $request->membership_type === 'personal' ||
                    $request->country !== 'US'
                ),
                'string',
                'size:9',
            ],
        ], [
            'organization_name.prohibited_if' => 'Organization details are unnecessary for personal memberships.',
            'tax_id.prohibited_if' => 'Tax ID is only needed for US-based corporate memberships.',
        ]);
        Membership::create($request->validated());
        return response()->json([
            'message' => 'Membership created successfully'
        ]);
    }
}
登录后复制
这个示例显示:

    >基于
  • 的条件字段要求。membership_type
  • >仅针对美国公司成员的税务ID验证。
  • 清除自定义错误消息。
  • 与其他验证规则集成。
  • 在多个条件下延伸:

>

您可以添加多个条件:

在维护代码可读性的同时,
'business_license' => [
    Rule::prohibitedIf(fn() =>
        $request->membership_type === 'personal' ||
        !in_array($request->business_type, ['retail', 'franchise'])
    ),
    'required_if:business_type,retail,franchise',
    'string',
]
登录后复制

允许进行复杂的验证逻辑。 这样可以确保您的表格有效地适应用户输入上下文。prohibited_if

以上是laravel的动态形式验证的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板