Request-URI Too Long Symfony Controller

I'm trying to get all the errors from all the queries I do in my project and redirect this errors to a controller called "error" that will treat theses errors as I want. The problem looks like when I redirect all the information goes in the url generated by the function via GET.

I suppose that if this information is sent via POST will disappear this problem but I'm not using obviously any form inside the controller. So, how can I say to the redirect function that these information shouldn't go with the url and instead should go via POST?

Is possible what I'm trying to do?

Inside Controllers:

    try {
        $results = $queries->aQuery();
    } catch (ErrorException $errorException) {
        return $this->redirect($errorException->redirectResponse);
    }

Inside the service query:

public function aQuery(){

    $query="SELECT * FROM blabla ...";
    try {
        $stmt = $this->DB->->prepararQuery($query);
        $stmt->execute();
        $results = $stmt->fetchAll();
    } catch (DBALException $DBALException) {
        $errorException = new ErrorException($this->router->generate('error',
            [
                'errorQuery' => $query,
                'errorData' => "0 => '".$data1."', 1 ....",
                'errorOrigin' => 'a place',
                'errorResponseText' => $DBALException->getMessage()
            ]
        ));
        throw $errorException;
    }
}

The ErrorException:

class ErrorException extends \Exception
{
    /**
     * @var \Symfony\Component\HttpFoundation\RedirectResponse
     */
    public $redirectResponse;

    /**
     * ErrorException constructor.
     * @param \Symfony\Component\HttpFoundation\RedirectResponse $redirectResponse
     */
    public function __construct(string $redirectResponse)
    {
        $this->redirectResponse = $redirectResponse;
    }

}

Upvotes: 2

Views: 543

Answers (1)

Brucie Alpha
Brucie Alpha

Reputation: 1226

If what you are trying to achieve is a centralized way to handle exceptions have a look at https://symfony.com/doc/4.0/event_dispatcher.html#creating-an-event-listener and use kernel.exception event

public function onKernelException(GetResponseForExceptionEvent $event)
{
    if (! $event->getException() instanceof ErrorException) {
        return;
    }

    // handle your custom ErrorException
    $response = new Response();
    $response->setContent($event->getException()->getMessage());

    // sends the modified response object to the event
    $event->setResponse($response);
}

Upvotes: 2

Related Questions