framework icon indicating copy to clipboard operation
framework copied to clipboard

Defining routes to a controller, Reflection errors

Open DaWolfey opened this issue 2 years ago • 3 comments

  • Themosis Version: 3.0.0
  • WordPress Version: 6.1.1
  • PHP Version: 8.1

Description

I must be doing something wrong here, my Laravel experience is not all that high so I am perfectly willing to accept user error, especially for such a rudimentary task. I am getting errors when I try to define a route to a controller, either using the [Pagecontroller::class,'page'] methor, or the 'PageController@page' method.

Steps to reproduce

Fresh installation of Themosis with Wordpress, set app_debug to true in .env Create a page in Wordpress named Test Create a new controller with Artisan named PageController In that controller add:

    public function Test() {
        return view('welcome');
    }

In routes/web.php add a route: Route::any('page', ['test', 'uses' => [PageController::class,'Test']]);

Accessing the page via site.com/test gives: ReflectionFunction::__construct(): Argument #1 ($function) must be of type Closure|string, array given

If the route is changed the other method as given in the docs: Route::any('page', ['test', 'uses' => 'PageController@Test']);

We now get a new error: Target class [PageController] does not exist.

Note that if the route is: Route::any('page', ['test', 'uses' => 'App\Http\Controllers\PageController@Test']);

It does work as expected, but the documentation explicitly says that it shouldn't be necessary.

DaWolfey avatar Dec 27 '22 18:12 DaWolfey

I should add that in Themosis 2.1, using the following did work as expected: Route::any('page', ['test', 'uses' => 'PageController@Test']);

DaWolfey avatar Dec 27 '22 18:12 DaWolfey

Running into this too now that I upgraded to 3.1. Can it be fixed @jlambe?

danieldunderfelt avatar Sep 30 '23 09:09 danieldunderfelt

Default controller namespace has been removed for routes in version 3.0. You can uncomment the default namespace located in the RouteServiceProvider file: https://github.com/themosis/themosis/blob/6d956e07fdd4c058b675e3837063213cfab4fa7e/app/Providers/RouteServiceProvider.php#L27

jlambe avatar Oct 01 '23 15:10 jlambe