ActiveForm::validate($model1, $model2);
Но для конкретной проверки "number" не нужно не when, ни scenario. А для "required" - нужно.
[['mass', 'capacity'], 'number', 'when' => function(){
if($this->cargoData == 'mv'){
return $this->mass || $this->capacity;
}
return false;
}],
Тогда сценарий надо передавать (например, в GET-параметре URL) в валидацию.
['mass', 'number', 'when' => function(){
if($this->cargoData == 'mv'){
return $this->mass;
}
return false;
}],
['capacity', 'number', 'when' => function(){
if($this->cargoData == 'mv'){
return $this->capacity;
}
return false;
}],
Тогда правильнее не сценарием, а 'when' и 'whenClient'
У Вас в действии ожидаются параметры, а Вы их не передали.
Для теста, удалите пока запрос параметров в действии и проверьте, туда ли попадает запрос или нет.
Если в тот контролер и в то действие, что Вам надо, тогда будете передавать параметры.