> */ public function rules(): array { return [ 'action' => ['required', 'in:add,update,remove,confirm,discard'], 'product_id' => ['required_if:action,add', 'integer', 'exists:products,id'], 'one_time_item_id' => ['required_if:action,update,remove', 'integer', 'exists:user_abo_one_time_items,id'], 'qty' => ['required_if:action,update', 'integer', 'min:1', 'max:100'], ]; } /** * @return array */ public function messages(): array { return [ 'action.required' => __('abo.onetime_action_required'), 'action.in' => __('abo.onetime_action_invalid'), 'product_id.required_if' => __('abo.product_not_found'), 'product_id.exists' => __('abo.product_not_found'), 'one_time_item_id.required_if' => __('abo.abo_item_not_found'), 'one_time_item_id.exists' => __('abo.abo_item_not_found'), 'qty.required_if' => __('abo.onetime_qty_required'), ]; } }