php – Render view through controller using Slim Framework 3

Question:

I'm trying to find a way to render the view using a controller in the slim framework but for some reason I'm getting the error:

Message: Using $this when not in object context

The function is a public function and it's inside a class normally and I'm following what it says in the Documentation

My route:

$app->get('/home', '\App\Http\Controller\Teste::main');

The base controller:

class Controller
{
   protected $ci;

   public function __construct(ContainerInterface $ci)
   {
       $this->ci = $ci;
   }
}

The test class:

class Teste extends Controller
{
   public function index($request, $response)
   {
      return "Hello!"; // Funciona
   }

   public function main($request, $response)
   {
       var_dump($this->ci); // Apresenta o erro
   }
}

Answer:

I've wasted many hours with an error similar to this one. The problem is in this excerpt:

$app->get('/home', '\App\Http\Controller\Teste::main');

With the use of "::" you are calling a static method. And for that reason this doesn't exist. Try it like this:

$app->get('/home', '\App\Http\Controller\Teste:main');
Scroll to Top