4.13.x Error bei Controller mit Route
Guten Abend Community,
ich habe neu eine 4.13er Contao-Version aufgesetzt und bin gerade dabei, einige Dinge auszuprobieren. Ich habe mir ein paar Routen erstellt und die dazugehörigen Controller. Meine Dateien sehen wie folgt aus:
services.yaml
Code:
services:
_defaults:
autowire: true
autoconfigure: true
public: false
App\:
resource: ../src
exclude: ../src/{Entity,Migrations,Model,Resources,Tests,Widget}
App\Controller\:
resource: ../src/Controller
public: true
routes.yaml
Code:
app.controller:
resource: ../src/Controller
type: annotation
time:
path: /time/
defaults:
_controller: 'App\Controller\TimeController::trackAction'
_scope: frontend
_token_check: false
module-track-add:
path: /module-track-add/
defaults:
_controller: 'App\Controller\ModuleController::addAction'
_scope: frontend
_token_check: false
module-track-update:
path: /module-track-update/
defaults:
_controller: 'App\Controller\ModuleController::updateAction'
_scope: frontend
_token_check: false
ModuleController.php
Code:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\AsController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
use Terminal42\ServiceAnnotationBundle\Annotation\ServiceTag;
class ModuleController
{
/**
* @Route("/module-track-add/")
*/
private $security;
public function __construct(Security $security)
{
$this->security = $security;
}
public function addAction()
{
// Get token
$token = $this->security->getToken();
// Check if user is authenticated
if(null !== $token && $token->isAuthenticated('ROLE_MEMBER')) {
// Get DB Instance
$dataBase = \Database::getInstance();
// Query
$sql = '';
// Execute Query
$result = $dataBase->prepare($sql)->execute();
$objResponse = new Response($sql);
} else {
// Redirect
\Controller::redirect(\Controller::replaceInsertTags('{{page::language}}') . '/');
}
return $objResponse;
}
/**
* @Route("/module-track-update/")
*/
public function updateAction()
{
// Get token
$token = $this->security->getToken();
// Check if user is authenticated
if(null !== $token && $token->isAuthenticated('ROLE_MEMBER')) {
// Get DB Instance
$dataBase = \Database::getInstance();
// Query
$sql = '';
// Execute Query
$result = $dataBase->prepare($sql)->execute()->fetchAllAssoc()[0];
// Query
$sql = '';
// Execute Query
$result = $dataBase->prepare($sql)->execute();
$objResponse = new Response($sql);
} else {
// Redirect
\Controller::redirect(\Controller::replaceInsertTags('{{page::language}}') . '/');
}
return $objResponse;
}
TimeController.php
Code:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\AsController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
use Terminal42\ServiceAnnotationBundle\Annotation\ServiceTag;
class TimeController
{
/**
* @Route("/time/")
*/
private $security;
public function __construct(Security $security)
{
$this->security = $security;
}
public function trackAction()
{
// Get token
$token = $this->security->getToken();
// Check if user is authenticated
if(null !== $token && $token->isAuthenticated('ROLE_MEMBER')) {
// Get DB Instance
$dataBase = \Database::getInstance();
// Query
$sql = '';
// Execute Query
$result = $dataBase->prepare($sql)->execute();
$objResponse = new Response($sql);
} else {
// Redirect
\Controller::redirect(\Controller::replaceInsertTags('{{page::language}}') . '/');
}
return $objResponse;
}
}
Wenn ich die Route /time/ aufrufe, dann wird der Code entsprechend ausgeführt, ebenso wie die Route /module-track-add/, jedoch werden die anderen Routen aus der ModuleController.php nicht ohne Fehler ausgegeben. Folgende Fehlermeldung erscheint:
Code:
[2023-11-03T21:55:49.148707+01:00] request.INFO: Matched route "app_module_update". {"route":"app_module_update","route_parameters":{"_route":"app_module_update","_controller":"App\\Controller\\ModuleController::updateAction"},"request_uri":"https://.../module-track-update/","method":"POST"} []
[2023-11-03T21:55:49.151609+01:00] request.CRITICAL: Uncaught PHP Exception Error: "Call to a member function get() on null" at /www/.../contao/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Controller.php line 845 {"exception":"[object] (Error(code: 0): Call to a member function get() on null at /www/.../contao/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Controller.php:845)"} []
Ich denke, dass Problem wird eher grundlegend sein, da ich mich mit der neuen Version noch nicht allzu sehr beschäftigt habe, aber vielleicht kann mir jemand den richtigen Weg aufzeigen.