L5.6 - 在 OR 中验证多个 'rules'
L5.6 - Validate multiple 'rules' in OR
我需要验证一个名为 starttime
的输入日期参数,它可以以两种格式传递 Y-m-d\TH:i:s
或 Y-m-d
。
现在,我的 PHP 代码只验证一条规则:
$validator = Validator::make($input_data, [
'starttime' => 'date_format:"Y-m-d\TH:i:s"',
]);
如何使用 OR
中的两条规则验证 starttime
?
谢谢。
我找到了一个解决方案,使用 Rule Objects:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Validator;
class StartOrEndDateRule implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$return1 = true;
$return2 = true;
/* Check validation on 'YYYY-MM-DD\THH:ii:ss' */
$validator = Validator::make([$attribute => $value], [
$attribute => 'date_format:"Y-m-d\TH:i:s"',
]);
if ($validator->fails()) {
$return1 = false;
}
/* Check validation on 'YYYY-MM-DD' */
$validator = Validator::make([$attribute => $value], [
$attribute => 'date_format:"Y-m-d"',
]);
if ($validator->fails()) {
$return2 = false;
}
/* Check value to return */
if ( $return1 === false && $return2 === false ) {
return false;
} else {
return true;
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The ":attribute" does not match the format "Y-m-d\TH:i:s" or "Y-m-d"';
}
}
在控制器中:
$validator = Validator::make($input_data, [
'starttime' => [new StartOrEndDateRule],
]);
我需要验证一个名为 starttime
的输入日期参数,它可以以两种格式传递 Y-m-d\TH:i:s
或 Y-m-d
。
现在,我的 PHP 代码只验证一条规则:
$validator = Validator::make($input_data, [
'starttime' => 'date_format:"Y-m-d\TH:i:s"',
]);
如何使用 OR
中的两条规则验证 starttime
?
谢谢。
我找到了一个解决方案,使用 Rule Objects:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Validator;
class StartOrEndDateRule implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$return1 = true;
$return2 = true;
/* Check validation on 'YYYY-MM-DD\THH:ii:ss' */
$validator = Validator::make([$attribute => $value], [
$attribute => 'date_format:"Y-m-d\TH:i:s"',
]);
if ($validator->fails()) {
$return1 = false;
}
/* Check validation on 'YYYY-MM-DD' */
$validator = Validator::make([$attribute => $value], [
$attribute => 'date_format:"Y-m-d"',
]);
if ($validator->fails()) {
$return2 = false;
}
/* Check value to return */
if ( $return1 === false && $return2 === false ) {
return false;
} else {
return true;
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The ":attribute" does not match the format "Y-m-d\TH:i:s" or "Y-m-d"';
}
}
在控制器中:
$validator = Validator::make($input_data, [
'starttime' => [new StartOrEndDateRule],
]);