Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

str_contains(): Argument #1 ($haystack) must be of type string, Closure given #41

Closed
jeremiahsherrill opened this issue Oct 20, 2022 · 8 comments
Labels
invalid This doesn't seem right

Comments

@jeremiahsherrill
Copy link

Using tenancy for laravel
PHP 8.1.1
Nova 4 latest

[stacktrace]
#0 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\Str.php(242): str_contains(Object(Closure), '@')
#1 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\Str.php(692): Illuminate\\Support\\Str::contains(Object(Closure), Array)
#2 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(307): Illuminate\\Support\\Str::parseCallback(Object(Closure))
#3 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(287): Illuminate\\Routing\\Route->parseControllerCallback()
#4 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(272): Illuminate\\Routing\\Route->getControllerClass()
#5 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\formfeed-uk\\nova-dependable-panel\\src\\Http\\Middleware\\InterceptValidationFailure.php(64): Illuminate\\Routing\\Route->getController()
#6 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\formfeed-uk\\nova-dependable-panel\\src\\Http\\Middleware\\InterceptValidationFailure.php(31): Formfeed\\DependablePanel\\Http\\Middleware\\InterceptValidationFailure->isDependentFieldRequest(Object(Illuminate\\Http\\Request))
#7 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Formfeed\\DependablePanel\\Http\\Middleware\\InterceptValidationFailure->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#8 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\formfeed-uk\\nova-dependable-panel\\src\\Http\\Middleware\\InterceptDependentFields.php(31): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#9 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Formfeed\\DependablePanel\\Http\\Middleware\\InterceptDependentFields->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#10 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\nova\\src\\Http\\Middleware\\BootTools.php(20): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#11 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Laravel\\Nova\\Http\\Middleware\\BootTools->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#12 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\nova\\src\\Http\\Middleware\\DispatchServingNovaEvent.php(24): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#13 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Laravel\\Nova\\Http\\Middleware\\DispatchServingNovaEvent->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#14 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\inertiajs\\inertia-laravel\\src\\Middleware.php(92): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#15 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#16 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#17 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#18 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#19 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#20 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\View\\Middleware\\ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Session\\Middleware\\StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Session\\Middleware\\StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#24 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\stancl\\tenancy\\src\\Middleware\\IdentificationMiddleware.php(36): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\stancl\\tenancy\\src\\Middleware\\InitializeTenancyBySubdomain.php(52): Stancl\\Tenancy\\Middleware\\IdentificationMiddleware->initializeTenancy(Object(Illuminate\\Http\\Request), Object(Closure), 'checkpoint')
#27 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\stancl\\tenancy\\src\\Middleware\\InitializeTenancyByDomainOrSubdomain.php(22): Stancl\\Tenancy\\Middleware\\InitializeTenancyBySubdomain->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Stancl\\Tenancy\\Middleware\\InitializeTenancyByDomainOrSubdomain->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Cookie\\Middleware\\EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(726): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#35 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(703): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#36 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(667): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#37 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(656): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#38 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(190): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#39 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#40 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\livewire\\livewire\\src\\DisableBrowserCache.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Livewire\\DisableBrowserCache->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\nova\\src\\Http\\Middleware\\ServeNova.php(23): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Laravel\\Nova\\Http\\Middleware\\ServeNova->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\barryvdh\\laravel-debugbar\\src\\Middleware\\InjectDebugbar.php(66): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#48 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#50 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#51 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#54 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#55 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#56 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Middleware\\HandleCors.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#57 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#58 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Middleware\\TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#59 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#60 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#61 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(165): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#62 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(134): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#63 C:\\Users\\Jeremiah\\Desktop\\projects\\valet\\app2\\public\\index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#64 C:\\Users\\Jeremiah\\AppData\\Roaming\\Composer\\vendor\\cretueusebiu\\valet-windows\\server.php(241): require('C:\\\\Users\\\\Jeremi...')
#65 {main}
@wdelfuego
Copy link
Owner

Hi Jeremiah!

That stack trace seems to indicate an issue in the formfeed-uk/nova-dependable-panel package.
If you think this is an issue with nova-calendar, could you explain what makes you think so?

@wdelfuego wdelfuego added the question Further information is requested label Oct 20, 2022
@jeremiahsherrill
Copy link
Author

jeremiahsherrill commented Oct 20, 2022

I just spotted that a little bit ago myself, had to deep dive, appears to be a conflict. I don't need dependable panel, though may in the future so I will need to trace down why these two conflict. Thanks for responding

@wdelfuego
Copy link
Owner

I don’t think there’s really a conflict, I’d be surprised at least. Let me know if you have reason to believe otherwise! Marking invalid for now.

Thanks for reporting!

@wdelfuego wdelfuego added invalid This doesn't seem right and removed question Further information is requested labels Oct 20, 2022
@ianrobertsFF
Copy link

Hey Both,

I make dependable panel, and I am seeing the same conflict with another package. I'm deep diving this now myself, so I'll update you with what I find.

@ianrobertsFF
Copy link

ianrobertsFF commented Nov 24, 2022

Wasn't an incompatibility with your package so much as route()->getController() is completely unsafe to use if the route uses a closure, and route()->isControllerAction() is protected. I'll PR core but for now (and for anyone of the future) I'll update that package.

@wdelfuego
Copy link
Owner

@ianrobertsFF Thanks for a nice package and for your updates here!

I didn't investigate this further so I'm not sure what was the nature of the conflict; I'm assuming that route/controller remark is relevant to your own package? Would you say there is anything going on in this package that could be improved to avoid conflicts?

@ianrobertsFF
Copy link

ianrobertsFF commented Nov 24, 2022

No conflict on your end, simply that I made the (incorrect) assumption that getController() was safe to use regardless of action. Your package registers its Inertia route via a closure, which causes the above exception when I used getController()

Only thing you could potentially do on your end (although it's not required) is to have an invokable controller that returns Inertia::render('NovaCalendar', ['pageTitle' => config('nova-calendar.title', 'Nova Calendar')]), but it shouldn't be an issue unless someone else creates a package that makes the same assumption I made. Although this would cause issues for any closure routes in any other packages, not just yours.

@wdelfuego
Copy link
Owner

OK, thanks a lot for the info!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
invalid This doesn't seem right
Projects
None yet
Development

No branches or pull requests

3 participants