Deprecated: Return type of Google\Model::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Model.php on line 256

Deprecated: Return type of Google\Model::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Model.php on line 261

Deprecated: Return type of Google\Model::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Model.php on line 268

Deprecated: Return type of Google\Model::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Model.php on line 278

Deprecated: Return type of Google\Collection::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Collection.php on line 22

Deprecated: Return type of Google\Collection::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Collection.php on line 38

Deprecated: Return type of Google\Collection::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Collection.php on line 30

Deprecated: Return type of Google\Collection::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Collection.php on line 43

Deprecated: Return type of Google\Collection::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Collection.php on line 14

Deprecated: Return type of Google\Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/sanralsmme/vendor/google/apiclient/src/Collection.php on line 49
Symfony Profiler

https://sanralsmme.nerdw.com/tender-region/northern-region/tenders.html

ErrorController

Request

GET Parameters

No GET parameters

POST Parameters

No POST parameters

Uploaded Files

No files were uploaded

Request Attributes

Key Value
_controller
"error_controller"
exception
Twig\Error\RuntimeError {#1087
  #message: "Variable "region" does not exist."
  #code: 0
  #file: "/var/www/html/sanralsmme/templates/frontend/tender-search.html.twig"
  #line: 3
  -lineno: 3
  -name: "frontend/tender-search.html.twig"
  -rawMessage: "Variable "region" does not exist."
  -sourcePath: "/var/www/html/sanralsmme/templates/frontend/tender-search.html.twig"
  -sourceCode: """
    {% extends 'base.html.twig' %}\n
        {% block title %}\n
            {% set metaTitle = 'SANRAL eSDD - ' ~ region|capitalize %}\n
            {{ metaTitle }}\n
        {% endblock %}\n
        {% block meta_decription %}\n
            {% set metaTitle = 'SANRAL eSDD - ' ~ region|capitalize %}\n
            {% set metaDescription = "SMME's can find out more about SANRAL tenders in the " ~ region|capitalize %}\n
            <meta name="twitter:card" content="summary" />\n
            <meta name="twitter:site" content="Sanral" />\n
            <meta name="twitter:title" content="{{ metaTitle }}" />\n
            <meta name="twitter:description" content="{{ metaDescription }}" />\n
    {#        <meta name="twitter:image" content="https://hugenouttunnel.nerdw.com/images/home/{{ home_data.ogImage }}" />#}\n
            <meta name="twitter:url" content="{{ app.request.uri }}" />\n
    \n
    {#        <meta name="og:image" content="https://hugenouttunnel.nerdw.com/images/home/{{ home_data.ogImage }}" />#}\n
            <meta name="og:title" content="{{ metaTitle }}" />\n
            <meta name="og:description" content="{{ metaDescription }}" />\n
            <meta name="og:url" content="{{ app.request.uri }}" />\n
            <meta name="description" content="{{ metaDescription }}">\n
        {% endblock %}\n
        {% block stylesheets %}\n
            {{ parent() }}\n
        {% endblock %}\n
    \n
        {% block layout %}\n
            <div id="content-wrapper" class="container-fluid">\n
                <div class="row no-gutters py-4">\n
                    <div class="col-md-9 px-3">\n
                        <div class="row mb-3">\n
                            <div class="col-12 no-gutters-sm">\n
                                {{ render(controller('App\\Controller\\TendersController::getSearchForm')) }}\n
                            </div>\n
                        </div>\n
                        <div class="row">\n
                            <div class="col-12 no-gutters-left">\n
    \n
                                <!-- Desktop -->\n
                                <div class="table-responsive-md d-none d-md-block">\n
                                    <table class="table custom-table">\n
                                        <thead class="rain-forest">\n
                                        <tr class="text-white text-uppercase font-weight-light table-head">\n
                                            <th style="max-width: 90px;" scope="col">Category</th>\n
                                            <th scope="col">Tender Description</th>\n
                                            <th style="max-width: 120px;" scope="col">Tender Number</th>\n
                                            <th style="max-width: 120px;" scope="col">Published</th>\n
                                            <th style="max-width: 150px;" scope="col">Closing Date &amp; Time</th>\n
                                        </tr>\n
                                        </thead>\n
                                        <tbody>\n
                                            {% if tenders|length > 0 %}\n
                                                {% for tender in tenders %}\n
                                                    <tr>\n
                                                        <td style="max-width: 90px;">\n
                                                            <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                                {{ tender.category }}\n
                                                            </a>\n
                                                        </td>\n
                                                        <td class="text-truncate" style="max-width: 300px;">\n
                                                            <a class="text-black text-uppercase font-weight-bold tender-desc" href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                                {{ tender.contractDescription }}\n
                                                            </a>\n
                                                        </td>\n
                                                        <td class="text-truncate" style="max-width: 120px;">\n
                                                            <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                                {{ tender.projectNumber }}\n
                                                            </a>\n
                                                        </td>\n
                                                        <td style="max-width: 120px;">\n
                                                            <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                                {{ tender.created|date('Y-m-d') }}\n
                                                            </a>\n
                                                        </td>\n
                                                        <td style="max-width: 150px;">\n
                                                            <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                                {{ tender.closingDate|date('Y-m-d') }}\n
                                                                {{ tender.closingTime }}:00:00\n
                                                            </a>\n
                                                        </td>\n
                                                    </tr>\n
                                                {%  endfor %}\n
                                            {% else %}\n
                                                <tr>\n
                                                    <td colspan="5">\n
                                                        There are currently no search results for <b><i>{{ search_criteria }}</i></b>.\n
                                                    </td>\n
                                                </tr>\n
                                            {% endif %}\n
                                        </tbody>\n
                                    </table>\n
                                </div>\n
    \n
                                <!-- Mobile -->\n
                                <div class="d-block d-md-none">\n
                                    {% if tenders|length > 0 %}\n
                                        {% for tender in tenders %}\n
                                            <div class="row rain-forest">\n
                                                <div class="col-12 font-weight-bold text-white" style="padding: 15px">\n
                                                    {{ tender.contractDescription }}\n
                                                </div>\n
                                            </div>\n
                                            <div class="row" style="background-color:#f0f0f0">\n
                                                <div class="col-12" style="padding: 15px">\n
                                                    <b>Category:</b> {{ tender.category }}\n
                                                </div>\n
                                            </div>\n
                                            <div class="row bl br">\n
                                                <div class="col-12 teaser-3-lines" style="padding: 15px">\n
                                                    <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                        {{ tender.projectNumber }}\n
                                                    </a>\n
                                                </div>\n
                                            </div>\n
                                            <div class="row" style="background-color:#f0f0f0">\n
                                                <div class="col-12" style="padding: 15px">\n
                                                    <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                        <b>Published:</b> {{ tender.created|date('Y-m-d') }}\n
                                                    </a>\n
                                                </div>\n
                                            </div>\n
                                            <div class="row bl br bb" style="margin-bottom: 15px">\n
                                                <div class="col-12" style="padding: 15px;">\n
                                                    <a href="{{ path('tenders_page',{'id': tender.id}) }}">\n
                                                        <b>Closing Date:</b> {{ tender.closingDate|date('Y-m-d') }}\n
                                                    </a>\n
                                                </div>\n
                                            </div>\n
                                        {% endfor %}\n
                                    {%  else %}\n
                                        <div class="row">\n
                                            <div class="col-12">\n
                                                There are currently no search results for <b><i>{{ search_criteria }}</i></b>.\n
                                            </div>\n
                                        </div>\n
                                    {% endif %}\n
                                </div>\n
    \n
                            </div>\n
                        </div>\n
                    </div>\n
                    <div class="col-md-3" style="margin-top: 18px">\n
                        {{ render(controller(\n
                            'App\\Controller\\CarouselController::getCarousel',\n
                            {\n
                                'page': 'tenders'\n
                            }\n
                        )) }}\n
                    </div>\n
                </div>\n
            </div>\n
        {% endblock %}
    """
  trace: {
    /var/www/html/sanralsmme/templates/frontend/tender-search.html.twig:3 {
      __TwigTemplate_cc0dad45bba838228c5ebedd29ddce54563a3b53e65110aa1db0ea3ea7124349->{closure} …
      › {% block title %}    {% set metaTitle = 'SANRAL eSDD - ' ~ region|capitalize %}    {{ metaTitle }}
    }
    /var/www/html/sanralsmme/var/cache/dev/twig/1d/1d73c8b787298dd029221f6c680c60f6e081062d76e1bf04d00b6a1718ba16da.php:72 {
      __TwigTemplate_cc0dad45bba838228c5ebedd29ddce54563a3b53e65110aa1db0ea3ea7124349->block_title($context, array $blocks = []) …
      › echo "        ";$context["metaTitle"] = ("SANRAL eSDD - " . twig_capitalize_string_filter($this->env, (isset($context["region"]) || array_key_exists("region", $context) ? $context["region"] : (function () { throw new RuntimeError('Variable "region" does not exist.', 3, $this->source); })())));// line 4
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/Template.php:171 {
      Twig\Template->displayBlock($name, array $context, array $blocks = [], $useBlocks = true, self $templateContext = null) …
      › try {    $template->$block($context, $blocks);} catch (Error $e) {
    }
    /var/www/html/sanralsmme/templates/base.html.twig:6 {
      __TwigTemplate_91fd3858f6f0781cf970879776137f3c25bfdaea0e70fb4dd26bc63501b725f4->doDisplay(array $context, array $blocks = []) …
      › <title>    {% block title %}        SANRAL SMME Tenders - Building South Africa Through Better Roads
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/Template.php:394 {
      Twig\Template->displayWithErrorHandling(array $context, array $blocks = []) …
      › try {    $this->doDisplay($context, $blocks);} catch (Error $e) {
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/Template.php:367 {
      Twig\Template->display(array $context, array $blocks = []) …
      › {    $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));}
    }
    /var/www/html/sanralsmme/var/cache/dev/twig/1d/1d73c8b787298dd029221f6c680c60f6e081062d76e1bf04d00b6a1718ba16da.php:51 {
      __TwigTemplate_cc0dad45bba838228c5ebedd29ddce54563a3b53e65110aa1db0ea3ea7124349->doDisplay(array $context, array $blocks = []) …
      › $this->parent = $this->loadTemplate("base.html.twig", "frontend/tender-search.html.twig", 1);$this->parent->display($context, array_merge($this->blocks, $blocks));}
    /var/www/html/sanralsmme/vendor/twig/twig/src/Template.php:394 {
      Twig\Template->displayWithErrorHandling(array $context, array $blocks = []) …
      › try {    $this->doDisplay($context, $blocks);} catch (Error $e) {
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/Template.php:367 {
      Twig\Template->display(array $context, array $blocks = []) …
      › {    $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));}
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/Template.php:379 {
      Twig\Template->render(array $context) …
      › try {    $this->display($context);} catch (\Throwable $e) {
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/TemplateWrapper.php:40 {
      Twig\TemplateWrapper->render(array $context = []): string …
      ›     // as it should only be used by internal code    return $this->template->render($context, \func_get_args()[1] ?? []);}
    }
    /var/www/html/sanralsmme/vendor/twig/twig/src/Environment.php:277 {
      Twig\Environment->render($name, array $context = []): string …
      › {    return $this->load($name)->render($context);}
    }
    /var/www/html/sanralsmme/vendor/symfony/framework-bundle/Controller/AbstractController.php:249 {
      Symfony\Bundle\FrameworkBundle\Controller\AbstractController->renderView(string $view, array $parameters = []): string …
      › 
      ›     return $this->container->get('twig')->render($view, $parameters);}
    }
    /var/www/html/sanralsmme/vendor/symfony/framework-bundle/Controller/AbstractController.php:257 {
      Symfony\Bundle\FrameworkBundle\Controller\AbstractController->render(string $view, array $parameters = [], Response $response = null): Response …
      › {    $content = $this->renderView($view, $parameters);}
    /var/www/html/sanralsmme/src/Controller/TendersController.php:340 {
      App\Controller\TendersController->getTenderRegion(Request $request) …
      › 
      › return $this->render('frontend/tender-search.html.twig',    [
    }
    /var/www/html/sanralsmme/vendor/symfony/http-kernel/HttpKernel.php:157 {
      Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response …
      › // call controller$response = $controller(...$arguments);}
    /var/www/html/sanralsmme/vendor/symfony/http-kernel/HttpKernel.php:79 {
      Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true) …
      › try {    return $this->handleRaw($request, $type);} catch (\Exception $e) {
    }
    /var/www/html/sanralsmme/vendor/symfony/http-kernel/Kernel.php:196 {
      Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true) …
      › try {    return $this->getHttpKernel()->handle($request, $type, $catch);} finally {
    }
    /var/www/html/sanralsmme/public/index.php:30 {$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();
    }
  }
}
logger
Symfony\Bridge\Monolog\Logger {#106 …6}

Request Headers

Header Value
accept
"text/html,application/xhtml+xml,application/xml;q=0.9,image/heif,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
accept-encoding
"gzip, deflate, br"
accept-language
"en-US,en;q=0.5"
connection
"keep-alive"
host
"sanralsmme.nerdw.com"
sec-fetch-dest
"document"
sec-fetch-mode
"navigate"
sec-fetch-site
"none"
sec-fetch-user
"?1"
upgrade-insecure-requests
"1"
user-agent
"Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)"
x-php-ob-level
"1"

Request Content

Request content not available (it was retrieved as a resource).

Response

Response Headers

Header Value
cache-control
"no-cache, private"
content-type
"text/html; charset=UTF-8"
date
"Mon, 25 Aug 2025 01:51:31 GMT"
x-debug-exception
"Variable%20%22region%22%20does%20not%20exist."
x-debug-exception-file
"%2Fvar%2Fwww%2Fhtml%2Fsanralsmme%2Ftemplates%2Ffrontend%2Ftender-search.html.twig:3"
x-debug-token
"d77ef8"

Cookies

Request Cookies

No request cookies

Response Cookies

No response cookies

Session

Session Metadata

No session metadata

Session Attributes

No session attributes

Flashes

Flashes

No flash messages were created.

Server Parameters

Server Parameters

Defined in .env

Key Value
APP_ENV
"dev"
APP_SECRET
"82864a2380672086ef13c3830958fa58"
DATABASE_URL
"mysql://root:Ape5ofJdM6h5woU2WBMn@127.0.0.1:3306/sanralsmme?serverVersion=5.7&charset=utf8"
GOOGLE_API_KEY
"AIzaSyB25CV2qcEXkFc9ZWAs1Ck7ygTQ1cNaPxs"
GOOGLE_CLIENT_ID
"704534741910-7au3j61ufj5jg8n9lnsrg68bb5bl87q1.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET
"1TKDL1McCdEwhlN8FfVbV7Vp"
MAILER_DSN
"smtp://smtp-outbound-3.nerdw.com:587"

Defined as regular env variables

Key Value
APP_DEBUG
"1"
CONTEXT_DOCUMENT_ROOT
"/var/www/html/sanralsmme/public"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/var/www/html/sanralsmme/public"
GATEWAY_INTERFACE
"CGI/1.1"
HTTPS
"on"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,image/heif,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
HTTP_ACCEPT_ENCODING
"gzip, deflate, br"
HTTP_ACCEPT_LANGUAGE
"en-US,en;q=0.5"
HTTP_CONNECTION
"keep-alive"
HTTP_HOST
"sanralsmme.nerdw.com"
HTTP_SEC_FETCH_DEST
"document"
HTTP_SEC_FETCH_MODE
"navigate"
HTTP_SEC_FETCH_SITE
"none"
HTTP_SEC_FETCH_USER
"?1"
HTTP_UPGRADE_INSECURE_REQUESTS
"1"
HTTP_USER_AGENT
"Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
PHP_SELF
"/index.php"
QUERY_STRING
""
REDIRECT_HTTPS
"on"
REDIRECT_SCRIPT_URI
"https://sanralsmme.nerdw.com/tender-region/northern-region/tenders.html"
REDIRECT_SCRIPT_URL
"/tender-region/northern-region/tenders.html"
REDIRECT_SSL_TLS_SNI
"sanralsmme.nerdw.com"
REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"aKvBona1sGJ@nOyYYVYQfAAAAAY"
REDIRECT_URL
"/tender-region/northern-region/tenders.html"
REMOTE_ADDR
"47.128.126.170"
REMOTE_PORT
"10754"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"https"
REQUEST_TIME
1756086690
REQUEST_TIME_FLOAT
1756086690.9335
REQUEST_URI
"/tender-region/northern-region/tenders.html"
SCRIPT_FILENAME
"/var/www/html/sanralsmme/public/index.php"
SCRIPT_NAME
"/index.php"
SCRIPT_URI
"https://sanralsmme.nerdw.com/tender-region/northern-region/tenders.html"
SCRIPT_URL
"/tender-region/northern-region/tenders.html"
SERVER_ADDR
"10.128.0.63"
SERVER_ADMIN
"webmaster@localhost"
SERVER_NAME
"sanralsmme.nerdw.com"
SERVER_PORT
"443"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SSL_TLS_SNI
"sanralsmme.nerdw.com"
SYMFONY_DOTENV_VARS
"APP_ENV,APP_SECRET,MAILER_DSN,DATABASE_URL,GOOGLE_API_KEY,GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET"
UNIQUE_ID
"aKvBona1sGJ@nOyYYVYQfAAAAAY"

Parent Request

Return to parent request (token = d2b2e4)

Key Value
_controller
"App\Controller\TendersController::getTenderRegion"
_firewall_context
"security.firewall.map.context.main"
_remove_csp_headers
true
_route
"tender_region_page"
_route_params
[
  "region" => "northern-region"
  "region_id" => "tenders.html"
]
region
"northern-region"
region_id
"tenders.html"