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.
Lesezeichen