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');