diff --git a/src/Validate.php b/src/Validate.php index b84a1d862c1d02a3e097d68ba41a203e92573df9..ac3f0e6ee7c3dae851ad0e94b7640bacfcd0d92a 100644 --- a/src/Validate.php +++ b/src/Validate.php @@ -213,7 +213,7 @@ class Validate extends RuleManager } if (method_exists($this, 'scene' . ucfirst($sceneName))) { - $scene = new ValidateScene($this->rule); + $scene = new ValidateScene($this->rule, $this->checkData); call_user_func([$this, 'scene' . ucfirst($sceneName)], $scene); $this->event = array_merge($this->event, $scene->events); $this->afters = array_merge($this->afters, $scene->afters); diff --git a/tests/Test/TestBug.php b/tests/Test/TestBug.php new file mode 100644 index 0000000000000000000000000000000000000000..710b530fcd8b0a7818a152c90b44994cb31d33b9 --- /dev/null +++ b/tests/Test/TestBug.php @@ -0,0 +1,44 @@ + + * + * This is not a free software + * Using it under the license terms + * visited https://www.w7.cc for more details + */ + +namespace W7\Tests\Test; + +use W7\Tests\Material\BaseTestValidate; +use W7\Validate\Support\ValidateScene; +use W7\Validate\Validate; + +class TestBug extends BaseTestValidate +{ + public function testBug5() + { + $v = new class extends Validate { + public $checkData = []; + + protected $rule = [ + 'name' => 'required' + ]; + + protected function sceneTest(ValidateScene $scene) + { + $this->checkData = $scene->getData(); + $scene->only(['name']); + } + }; + + $v->scene('test')->check([ + 'name' => 123 + ]); + + $this->assertArrayHasKey('name', $v->checkData); + $this->assertEquals(123, $v->checkData['name']); + } +}