public class Substance
{
public int? SubstanceId { get; set; }
public string SubstanceName { get; set; }
public decimal? SubstanceAmount { get; set; }
public int? SubstanceUnitId { get; set; }
public int? SubstanceRouteId { get; set; }
public DateTimeOffset? SubstanceTime { get; set; }
}
и я хочу проверить, что:
имеют ли SubstanceAmount и SubstanceUnitId значения, и
если SubstanceRouteId имеет значение и
если SubstanceTime имеет значение
для любого из элементов вещества.
Я хочу отправить по одному сообщению об ошибке для каждого из правил, если они не выполняются, а не для каждого вещества, что происходит сейчас со следующим:
Я только начал использовать FluentValidation v9.x и мне интересно, как проверить правила в коллекции. В основном, если у меня есть коллекция веществ[code]public class Substance { public int? SubstanceId { get; set; } public string SubstanceName { get; set; } public decimal? SubstanceAmount { get; set; } public int? SubstanceUnitId { get; set; } public int? SubstanceRouteId { get; set; } public DateTimeOffset? SubstanceTime { get; set; } } [/code] и я хочу проверить, что: [list] [*]имеют ли SubstanceAmount и SubstanceUnitId значения, и [*]если SubstanceRouteId имеет значение и [*]если SubstanceTime имеет значение для любого из элементов вещества.
Я хочу отправить по одному сообщению об ошибке для каждого из правил, если они не выполняются, а не для каждого вещества, что происходит сейчас со следующим: [code]RuleForEach(x => x.SubstanceList).SetValidator(new SubstanceValidator(RuleSetsToApply));
public class SubstanceValidator : AbstractValidator { public SubstanceValidator(List RuleSetsToApply) { string ruleSetName = "SubstanceAmountUnit"; RuleSet(ruleSetName, () => { RuleFor(x => x.SubstanceAmount).NotNull().NotEmpty(); RuleFor(x => x.SubstanceUnitId).NotNull().NotEmpty().GreaterThan(0); });
ruleSetName = "SubstanceRoute"; RuleSet(ruleSetName, () => { RuleFor(x => x.SubstanceRouteId).NotNull().NotEmpty().GreaterThan(0); }); } } [/code] Итак, если у меня есть пять веществ и
[*]первое вещество не соответствует Правилу №2,
[*]третий не соответствует Правилу №1 и №2 и
[*]четвертый не соответствует Правилу №3,
Я ожидаю, что для каждого правила будет возвращена одна ошибка, даже несмотря на то, что правило №2 не удалось выполнить дважды. [/list] Как я могу это сделать ?
Я работаю над проектом Laravel, в котором у меня есть две коллекции заданий: одна с разбивкой на страницы, другая — статическая. Вот код моего контроллера:
$jobs = Job::with('employer', 'tags')
->latest()
->paginate(10);