themosis / framework

The Themosis framework core.

Home Page:https://framework.themosis.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Defining routes to a controller, Reflection errors

DaWolfey opened this issue · 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.

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

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

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