Hi,
I’m new with Slim and I have some doubts about how to use. I have read the documentation about it but it is not clear to me. https://discourse.slimframework.com/t/controllers-using-container-resolution/342
Here is what I have got in my project folder:
-- public
-- | -- index.php
-- | -- .htaccess
-- Txartelak
-- | -- Controllers
-- | -- | -- txartelakController.php
-- dependencies.php
-- composer.json
-- routes.php
-- settings.php
-- vendor
composer.json
{
"require": {
"php": ">=5.5.0",
"slim/slim": "^3.1",
"slim/twig-view": "^2.0",
"monolog/monolog": "^1.17"
},
"autoload": {
"psr-4": {
"Txartelak\\": "src/Txartelak"
}
}
}
index.php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Txartelak\Controller\txartelakController;
require __DIR__ . '/../vendor/autoload.php';
// Instantiate the app
$settings = require __DIR__ . '/../settings.php';
$app = new \Slim\App($settings);
// Set up dependencies
require __DIR__ . '/../dependencies.php';
// Register routes
require __DIR__ . '/../routes.php';
// Run app
$app->run();
routes.php
use Slim\Http\Request;
use Slim\Http\Response;
use Txartelak\Controller\txartelakController;
$app->get('/berriakClas', \txartelakController::class . ':berriak');
txartelakController.php
namespace Txartelak\Controller;
class txartelakController
{
protected $container;
// constructor receives container instance
public function __construct(ContainerInterface $container) {
$this->container = $container;
}
public function berriak($request, $response, $args) {
// your code
// to access items in the container... $this->container->get('');
return $response;
}
public function contact($request, $response, $args) {
// your code
// to access items in the container... $this->container->get('');
return $response;
}
}
The problem is that if when go to mydomain.com/berriakClas i have a Slim application error: Callable txartelakController does not exist
¿What are I’m doing wrong?