File tree Expand file tree Collapse file tree 2 files changed +49
-1
lines changed Expand file tree Collapse file tree 2 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -54,6 +54,8 @@ public function boot()
5454 $ this ->getConfigPath () => config_path ('doctrine.php ' ),
5555 ], 'config ' );
5656 }
57+
58+ $ this ->ensureValidatorIsUsable ();
5759 }
5860
5961 /**
@@ -81,6 +83,26 @@ public function register()
8183 }
8284 }
8385
86+ protected function ensureValidatorIsUsable ()
87+ {
88+ if (!$ this ->isLumen ()) {
89+ return ;
90+ }
91+
92+ if ($ this ->shouldRegisterDoctrinePresenceValidator ()) {
93+ // due to weirdness the default presence verifier overrides one set by a service provider
94+ // so remove them so we can re add our implementation later
95+ unset($ this ->app ->availableBindings ['validator ' ]);
96+ unset($ this ->app ->availableBindings ['Illuminate\Contracts\Validation\Factory ' ]);
97+ } else {
98+ // resolve the db,
99+ // this makes `isset($this->app['db']) == true`
100+ // which is required to set the presence verifier
101+ // in the default ValidationServiceProvider implementation
102+ $ this ->app ['db ' ];
103+ }
104+ }
105+
84106 /**
85107 * Merge config
86108 */
@@ -202,7 +224,11 @@ protected function registerExtensions()
202224 */
203225 protected function registerPresenceVerifierProvider ()
204226 {
205- $ this ->app ->register (PresenceVerifierProvider::class);
227+ $ this ->app ->singleton ('validator ' , function () {
228+ $ this ->app ->register (PresenceVerifierProvider::class);
229+
230+ return $ this ->app ->make ('validator ' );
231+ });
206232 }
207233
208234 /**
Original file line number Diff line number Diff line change 22
33namespace LaravelDoctrine \ORM \Validation ;
44
5+ use Illuminate \Validation \Factory ;
56use Illuminate \Validation \ValidationServiceProvider ;
67
78class PresenceVerifierProvider extends ValidationServiceProvider
@@ -13,6 +14,27 @@ class PresenceVerifierProvider extends ValidationServiceProvider
1314 */
1415 protected $ defer = true ;
1516
17+ /**
18+ * Register the validation factory.
19+ *
20+ * @return void
21+ */
22+ protected function registerValidationFactory ()
23+ {
24+ $ this ->app ->singleton ('validator ' , function ($ app ) {
25+ $ validator = new Factory ($ app ['translator ' ], $ app );
26+
27+ // The validation presence verifier is responsible for determining the existence of
28+ // values in a given data collection which is typically a relational database or
29+ // other persistent data stores. It is used to check for "uniqueness" as well.
30+ if (isset ($ app ['registry ' ]) && isset ($ app ['validation.presence ' ])) {
31+ $ validator ->setPresenceVerifier ($ app ['validation.presence ' ]);
32+ }
33+
34+ return $ validator ;
35+ });
36+ }
37+
1638 /**
1739 * Register the database presence verifier.
1840 *
You can’t perform that action at this time.
0 commit comments