Php 如何从$data Laravel中删除数据
我正在使用laravel的验证器创建登录验证,我的登录有两种类型的用户。一个值PAR(客户端)和一个PRO(专业)。如果选中单选按钮pro,则会在我的表单中再添加3个字段。 当我是客户时,如何从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
$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中删除字段,以避免恶意用户填写这些字段,也可以使用第一段代码。如果您阅读文档,您会发现: 如果:另一个字段,值,。。。 如果另一个字段等于任何值,则验证中的字段必须存在且不为空
如果您阅读文档,您会发现: 如果:另一个字段,值,。。。 如果另一个字段等于任何值,则验证中的字段必须存在且不为空
那么你那里的东西有什么问题吗?它有效吗?你看这里了吗:那么你那里的东西有什么问题吗?它有效吗?你看这里了吗: