You're viewing the docs for an old version of this package. Go to the latest version?

Internal Dispatching (Laravel Forum 3.x)

Internal Dispatching

laravel-forum 3 enables dispatching requests to the API from any part of your application. The dispatcher consists of two parts; the dispatcher class itself and a ‘receiver’ interface to ensure proper response handling.

The dispatcher is available at Riari\Forum\API\Dispatcher and should be instantiated with the class that will handle responses from it:

$dispatcher = new \Riari\Forum\API\Dispatcher($receiver);

In this case, $receiver should be an instance of a class implementing \Riari\Forum\Contracts\API\ReceiverContract and should contain the following method:

    /**
     * Handle a response from the dispatcher for the given request.
     *
     * @param  Request  $request
     * @param  Response  $response
     * @return Response|mixed
     */
    public function handleResponse(Request $request, Response $response)
    {
        //
    }

As an example, the optional front-end package uses the following:

    /**
     * Handle a response from the dispatcher for the given request.
     *
     * @param  Request  $request
     * @param  Response  $response
     * @return Response|mixed
     */
    public function handleResponse(Request $request, Response $response)
    {
        if ($response->getStatusCode() == 422) {
            $errors = $response->getOriginalContent()['validation_errors'];
            throw new HttpResponseException(
                redirect()->back()->withInput($request->input())->withErrors($errors)
            );
        }
        return $response->isNotFound() ? abort(404) : $response->getOriginalContent();
    }

This ensures validation errors and 404s are handled appropriately.