Php 如何从$data Laravel中删除数据

Php 如何从$data Laravel中删除数据,php,arrays,laravel,forms,validation,Php,Arrays,Laravel,Forms,Validation,我正在使用laravel的验证器创建登录验证,我的登录有两种类型的用户。一个值PAR(客户端)和一个PRO(专业)。如果选中单选按钮pro,则会在我的表单中再添加3个字段。 当我是客户时,如何从$data中删除这些字段? 以下是我测试的内容: // VERIFICATION OF THE USER'S STATUS if($data['status'] == 'PAR') { return Validator::make($data, [ // C

我正在使用laravel的验证器创建登录验证,我的登录有两种类型的用户。一个值PAR(客户端)和一个PRO(专业)。如果选中单选按钮pro,则会在我的表单中再添加3个字段。 当我是客户时,如何从
$data
中删除这些字段? 以下是我测试的内容:

// VERIFICATION OF THE USER'S STATUS
    if($data['status'] == 'PAR') {
        return Validator::make($data, [
            // CLIENT PART
            'name' => 'required|string|max:255',
            'surname' => 'required|string|max:255',
            'email_user' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'gender' => 'required|string',
            'birth' => 'required|date',
            'address' => 'required|string|max:255',
            'city' => 'required|string|max:255',
            'pc' => 'required|numeric|digits_between:4,5',
            'status' => 'required|string|max:255',
        ]);
    }

    else if($data['status'] == 'PRO') {
        return Validator::make($data, [
            // PROFESSIONNAL PART
            'name' => 'required|string|max:255',
            'surname' => 'required|string|max:255',
            'email_user' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'gender' => 'required|string',
            'birth' => 'required|date',
            'address' => 'required|string|max:255',
            'city' => 'required|string|max:255',
            'pc' => 'required|numeric|digits_between:4,5',
            'status' => 'required|string|max:255',

            'phone' => 'required|numeric',
            'license' => 'requiredmimes:jpeg,pdf,png',
            'urssaf' => 'required|mimes:jpeg,pdf,png'
        ]);
    }
然后我将对User::create函数执行相同的操作。 我正在使用JS显示或不显示phone/license/urssaf字段。因此,在我的表单中,它们已经在表单中包含并作为“”发送。

您可以使用(
array\u,除了
helper函数)[from laravel]在一些
if
子句中删除它:

$data = array_except($data, ['phone', 'license', 'urssaf']);
但实际上看起来您需要从验证规则中删除项,而不是从数据中删除项

由于两种情况下的规则几乎相同,您可以执行以下操作:

$rules = [ 
    /** Common rules here */
]

if ($data['status'] == 'PRO') {
    $rules = array_merge($rules, [
    /** Specific rules here */
    ]
}

return Validator::make($data, $rules);
这将避免你需要重复你自己

如果您还想从$data中删除字段,以避免恶意用户填充该字段,则也可以使用第一段代码。

您可以使用(
array_,但
helper函数除外)[from laravel]在某些
if
子句中删除它:

$data = array_except($data, ['phone', 'license', 'urssaf']);
但实际上看起来您需要从验证规则中删除项,而不是从数据中删除项

由于两种情况下的规则几乎相同,您可以执行以下操作:

$rules = [ 
    /** Common rules here */
]

if ($data['status'] == 'PRO') {
    $rules = array_merge($rules, [
    /** Specific rules here */
    ]
}

return Validator::make($data, $rules);
这将避免你需要重复你自己


如果您还想从$data中删除字段,以避免恶意用户填写这些字段,也可以使用第一段代码。

如果您阅读文档,您会发现:

如果:另一个字段,值,。。。 如果另一个字段等于任何值,则验证中的字段必须存在且不为空



如果您阅读文档,您会发现:

如果:另一个字段,值,。。。 如果另一个字段等于任何值,则验证中的字段必须存在且不为空



那么你那里的东西有什么问题吗?它有效吗?你看这里了吗:那么你那里的东西有什么问题吗?它有效吗?你看这里了吗: