Php Laravel在自定义验证规则上附加规则
在请求中,我得到了定义验证规则和流的属性。假设它是账户类型:商业、个人。 每个值都会更改验证流,并要求在ir请求中显示不同的属性 假设我有以下自定义规则和方法:Php Laravel在自定义验证规则上附加规则,php,laravel,validation,laravel-5,Php,Laravel,Validation,Laravel 5,在请求中,我得到了定义验证规则和流的属性。假设它是账户类型:商业、个人。 每个值都会更改验证流,并要求在ir请求中显示不同的属性 假设我有以下自定义规则和方法: public function validateAccountTypeBusiness($attribute, $value, $parameters, Validator $validator) { // check is present: // Company address // VAT number } pu
public function validateAccountTypeBusiness($attribute, $value, $parameters, Validator $validator)
{
// check is present:
// Company address
// VAT number
}
public function validateAccountTypePersonal($attribute, $value, $parameters, Validator $validator)
{
// check is present:
// User mobile phone
}
由于每个规则都要求根据账户类型(增值税编号、公司名称等)在此请求中显示多个属性,因此返回false
将不会向用户提供信息,因为生成的响应通知表明账户类型无效,没有任何缺少实际属性的详细信息
问题是:如何在此验证自定义规则中附加更多要验证的规则
以下各项不起作用:
public function validateAccountTypeBusiness($attribute, $value, $parameters, Validator $validator)
{
$validator->addRules([
'company_address' => 'required|string',
'vat_number' => 'required',
]);
}
根据我的理解,自定义验证规则只能用于一个参数&您试图将它们组合在一起 这是解决问题的许多方法之一。希望能有帮助
<?php
namespace App\Http\Controllers;
use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class AccountController extends Controller
{
/**
* Store a new user account.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
if($request->input('account_type' == 'business') {
// Validation for business account
$validator = Validator::make($request->all(), [
'company_address' => 'required|string',
'vat_number' => 'required',
]);
}
else {
// Validation for personal account
$validator = Validator::make($request->all(), [
'contact_number' => 'required',
]);
}
if ($validator->fails()) {
return redirect('account/create')
->withErrors($validator)
->withInput();
}
// Store the user account...
}
}
根据我的理解,自定义验证规则只能用于一个参数&您试图将它们组合在一起
这是解决问题的许多方法之一。希望能有帮助
<?php
namespace App\Http\Controllers;
use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class AccountController extends Controller
{
/**
* Store a new user account.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
if($request->input('account_type' == 'business') {
// Validation for business account
$validator = Validator::make($request->all(), [
'company_address' => 'required|string',
'vat_number' => 'required',
]);
}
else {
// Validation for personal account
$validator = Validator::make($request->all(), [
'contact_number' => 'required',
]);
}
if ($validator->fails()) {
return redirect('account/create')
->withErrors($validator)
->withInput();
}
// Store the user account...
}
}
如果遵循,可以使用以下方法进行验证
步骤1:使用静态规则创建验证器实例,这两种情况下(业务或个人帐户)的规则相同,如姓名、支票、电话、电子邮件等
$v = Validator::make($data, [
'email' => 'required|email',
'name' => 'required|alpha',
'phone' => 'required|numeric',
'check' => 'required' //common in both account type
//add more rules as required
]);
步骤2:添加带条件的特定规则
$v->sometimes('VAT', 'required|max:50', function ($input) {
return $input->account_type == 'business';
});
$v->sometimes('Company_address', 'required|max:500|alpha', function ($input) {
return $input->account_type == 'business';
});
$v->sometimes('user_mobile', 'required|numeric', function ($input) {
return $input->account_type == 'personal';
});
有时()
方法的参数:
传递给方法的第一个参数是
我们正在有条件地验证的字段。第二个论点是
我们要添加的规则。如果闭包作为第三个参数传递
返回true,将添加规则
如果遵循,可以使用以下方法进行验证
步骤1:使用静态规则创建验证器实例,这两种情况下(业务或个人帐户)的规则相同,如姓名、支票、电话、电子邮件等
$v = Validator::make($data, [
'email' => 'required|email',
'name' => 'required|alpha',
'phone' => 'required|numeric',
'check' => 'required' //common in both account type
//add more rules as required
]);
步骤2:添加带条件的特定规则
$v->sometimes('VAT', 'required|max:50', function ($input) {
return $input->account_type == 'business';
});
$v->sometimes('Company_address', 'required|max:500|alpha', function ($input) {
return $input->account_type == 'business';
});
$v->sometimes('user_mobile', 'required|numeric', function ($input) {
return $input->account_type == 'personal';
});
有时()
方法的参数:
传递给方法的第一个参数是
我们正在有条件地验证的字段。第二个论点是
我们要添加的规则。如果闭包作为第三个参数传递
返回true,将添加规则
可以考虑使用条件添加规则吗?