如果用户在表格中选择了他想要2张票类型的票据"票证类型1"和#34; 2号机票和#34; RegistrationController
在$request
:
array:2 [▼
"_token" => ""
"types" => array:2 [▼
"ticket type 1" => "2"
"ticket type 2" => "1"
]
]
但我希望有一个规则" StoreTicketTypeQuantity"验证以下上下文:
每个故障单类型在数据库中都有一列minPerUser和一个maxPerUser列。
例如,TicketType表具有名称为#34的故障单类型;故障单类型1"将minPerUser值设为" 1"并且maxPerUser值为" 4"。因此,在选择菜单中,用户只能为票证类型选择1到4之间的值"票证类型1"。
但是,用户可以在源代码中引入数量为" 100"对于故障单类型"故障单类型1",这应该导致验证错误。
的疑问:
您知道如何在StoreTicketTypeQuantity规则文件中获取数组的动态值来验证它吗?
TicketType型号:
class TicketType extends Model
{
protected $fillable = [
'name', 'price', 'minPerUser', 'maxPerUser','congress_id'
];
public function congress(){
return $this->belongsTo('App\Congress');
}
}
规则文件:
class TicketTypeQuantity implements Rule
{
public function __construct()
{
}
public function passes($attribute, $value)
{
}
public function message()
{
return 'The validation error message.';
}
}
答案 0 :(得分:3)
$rules = array('someVar'=>'required|numericarray')
使用它:
QDataStream &operator<<(QDataStream &out, PbxCfgHeader &info)
{
out.writeRawData((char*)&info, sizeof(info));
return out;
}
答案 1 :(得分:1)
在TicketTypeQuantity类中尝试此自定义验证:
public function passes($attribute, $value)
{
foreach($value as $key=>$v){
$ticket = TicketType::where('name',$key)->first();
if ( $v < $ticket->minPerUser || $v > $ticket->maxPerUser)
return false;
}
return true;
}
现在在验证中
$request->validate([
'types' => ['required', 'array', new TicketTypeQuantity ],
]);