/** * @return string */ private function getTestTo() { if ($this->fails()) { throw new \RuntimeException(); } return $this->dio->get('testTo'); }
/** * @test */ function requiredIf_after_rule_is_applyed() { $input = ['flag' => 'A', 'done' => '']; $this->validate->source($input); $this->validate->asText('flag'); $this->validate->asText('done')->requiredIf('flag', ['a']); $this->assertEquals(true, $this->validate->passes()); $input = ['flag' => 'A', 'done' => '']; $validation = $this->factory->on($input); $validation->asText('flag')->string('lower'); $validation->asText('done')->requiredIf('flag', ['a']); $this->assertEquals(true, $validation->fails()); $this->assertEquals('required item', $validation->message('done')); }
/** * @param Dio $dio * @param array|Rules $rules * @return array|Rules */ public static function prepare_requiredIf($dio, $rules) { if (!self::arrGet($rules, 'requiredIf')) { return $rules; } $args = $rules['requiredIf']; if (!is_array($args)) { $flag_name = $args; $flags_in = null; } else { $flag_name = $args[0]; $flags_in = array_key_exists(1, $args) ? (array) $args[1] : null; } $flag_value = $dio->get($flag_name); if ((string) $flag_value === '') { return $rules; } if ($flags_in && !in_array($flag_value, $flags_in)) { return $rules; } $rules['required'] = true; return $rules; }