| Current Path : /var/www/v3.cesa.co.za/src/CoreBundle/Controller/ |
| Current File : /var/www/v3.cesa.co.za/src/CoreBundle/Controller/DefaultController.php |
<?php
namespace App\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\CoreBundle\Services\ServiceGetterManager;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Throwable;
class DefaultController extends AbstractController
{
public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container)
{
$this->container = $container;
}
#[Route('/', name: 'home')]
public function index(Request $request, ServiceGetterManager $sg): Response
{
// $sg->get('user_list.manager')->getLoggedInUser();
return $this->render('@CoreBundle/index.html.twig', []);
}
#[Route('/page-not-found', name: 'iga_core_404')]
public function contentNotFoundAction(Request $request, ServiceGetterManager $sg)
{
$code = $request->get('code', 200);
$response = new Response(
$this->renderView('@CoreBundle/Default/page.not_found.html.twig'),
$code
);
$response->headers->set('X-robots-tag', 'noindex');
return $response;
}
#[Route('/exception', name: 'iga_core_exception')]
public function exceptionAction(FlattenException $exception, DebugLoggerInterface $logger = null, ServiceGetterManager $sg = null): Response
{
// If ServiceGetterManager is not injected, get it from the container
if (!$sg) {
$sg = $this->container->get('service_getter.manager');
}
$errorString = $exception->getMessage();
$statusCode = $exception->getStatusCode();
$trace = $exception->getTraceAsString();
// Log the error with full details if we have the error log manager
if ($sg) {
try {
$errorLogManager = $sg->get('error_log.manager');
$errorDetails = sprintf(
"Exception: %s\nStatus Code: %d\nFile: %s\nLine: %d\nTrace:\n%s",
$errorString,
$statusCode,
$exception->getFile(),
$exception->getLine(),
$trace
);
/** @var \App\CoreBundle\Services\ErrorLogManager $errorLogManager */
$errorLogManager->error($errorDetails, false, true, true);
} catch (\Exception $e) {
// If error logging fails, at least log to Symfony's logger
if ($logger) {
// DebugLoggerInterface doesn't have standard logging methods, so we'll just continue
}
}
}
// For production, show a generic error message
if ($this->getParameter('kernel.environment') === 'prod') {
$errorString = 'An error occurred while processing your request. Please try again later.';
}
return $this->render(
'@CoreBundle/Default/page.error.html.twig',
array('errorMessage' => nl2br($errorString))
);
}
#[Route('/error', name: 'iga_core_500')]
public function errorAction(Request $request, ServiceGetterManager $sg, $errorMessage = ''): Response
{
if (empty($errorMessage)) {
$errorMessage = $request->get('message') ?? '';
}
return $this->render('@CoreBundle/Default/page.error.html.twig', array('errorMessage' => $errorMessage));
}
#[Route('/no-access', name: 'iga_core_403')]
public function noAccessAction(Request $request, ServiceGetterManager $sg): Response
{
return $this->render('@CoreBundle/Default/page.no_access.html.twig');
}
}