考虑一下:
def getTotalPrice (sizeOfferPrices){
def strTravelersAssociated
def floatImporteViaje = 0
String [] arrTravelersAssociated
def offerAmountTemp
//recorremos los precios que se nos ha devuelto en la oferta
for(i=0; i<=sizeOfferPrices-1; i++){
//obtenemos el precio
offerAmountTemp = responseAsSlurper.Body.FlightPriceRS.PricedFlightOffers.PricedFlightOffer.OfferPrice[i].RequestedDate.PriceDetail.TotalAmount.SimpleCurrencyPrice
offerAmountTemp = offerAmountTemp.toFloat();
//obtenemos los datos de los viajeros asociados , casteamos a string y splitamos para obtener array
strTravelersAssociated = responseAsSlurper.Body.FlightPriceRS.PricedFlightOffers.PricedFlightOffer.OfferPrice[i].RequestedDate.Associations.AssociatedTraveler.TravelerReferences
strTravelersAssociated = strTravelersAssociated.toString();
arrTravelersAssociated = strTravelersAssociated.tokenize(" ");
//obtenemos el numero de viajeros por oferta
intTravelersByOffer = arrTravelersAssociated.size().toInteger();
//realizamos la multiplicaciónd viajeros por su oferta asociada
floatImporteViajeTemp = (offerAmountTemp * intTravelersByOffer).round(2);
floatImporteViaje = floatImporteViaje + floatImporteViajeTemp;
}
//obtenemos el precio total
amount = floatImporteViaje.round(2);
return amount
}
在上面的示例中,protected $rules = array(
'mobile_number' => 'phone:AUTO,mobile,:country_code'
);
的值需要根据在验证发生之前定义的变量进行更改。
考虑到这一点,是否可以将变量传递给Laravel验证规则?
请记住,这就是我调用验证的方式:
country_code
答案 0 :(得分:0)
您可以创建自定义验证规则。
看起来像这样:
Validator::extend('country_code', function($attribute, $value, $parameters, $validator) {
if ($value === 'US') {
return false;
}
return true;
});
然后就这样使用它:
protected $rules = array(
'mobile_number' => 'phone:AUTO,mobile|country_code'
);
重新阅读你的信息后,我意识到你的意思有点不同。但是看一下$parameters
参数。
并阅读文档。它很好地覆盖了https://laravel.com/docs/5.3/validation#custom-validation-rules
答案 1 :(得分:0)
使用这种新方法,如果你扩展了一个新规则并且你有一个想要传递给闭包的变量,你可以这样做:
Validator::extend(nameOfTheRule, function ($attribute, $value, $parameters, $validator) use ($priorVariable) {
//code
}