themosis / framework

The Themosis framework core.
https://framework.themosis.com/
GNU General Public License v2.0
671 stars 121 forks source link

Defining routes to a controller, Reflection errors #884

Open DaWolfey opened 1 year ago

DaWolfey commented 1 year ago

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 commented 1 year ago

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

danieldunderfelt commented 1 year ago

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

jlambe commented 1 year ago

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