XF 2.0 How to use front controller pre view

turkyalawlqy

Active member
Hi How to use
front_controller_pre_view in XenForo 2.x

use in XenForo 1.x
PHP:
public static function frontControllerPreView(XenForo_FrontController $fc, XenForo_ControllerResponse_Abstract &$controllerResponse, XenForo_ViewRenderer_Abstract &$viewRenderer, array &$containerParams)
    {
        $dependencies = $fc->getDependencies();
        
        $request = $fc->getRequest();
        $requestUri = $request->getRequestUri();

        if (!strstr($requestUri, '/account/')  && $dependencies instanceof XenForo_Dependencies_Public)
        {
            $redirect = new XenForo_ControllerResponse_Redirect();
            $redirect->redirectType = XenForo_ControllerResponse_Redirect::SUCCESS;
            $redirect->redirectTarget = XenForo_Link::buildPublicLink('account');

            $controllerResponse = $redirect;           
        }
    }

How to do in XenForo 2.x

Thanks
 
You're looking for dispatcher_post_dispatch:

PHP:
/**
* @param \XF\Mvc\Dispatcher          $dispatcher,
* @param \XF\Mvc\Reply\AbstractReply $reply,
* @param \XF\Mvc\RouteMatch          $routeMatch,
* @param \XF\Mvc\RouteMatch          $originalMatch
*/
public static function dispatcherPostDispatch(
    \XF\Mvc\Dispatcher $dispatcher,
    \XF\Mvc\Reply\AbstractReply &$reply,
    \XF\Mvc\RouteMatch $routeMatch,
    \XF\Mvc\RouteMatch $originalMatch
) {
    $app = \XF::app();

    if ($app instanceof \XF\Pub\App) {
        $request = $dispatcher->getRequest();
        $routePath = $request->getRoutePath();

        if (strpos($routePath, 'account/') !== 0) {
            $router = $dispatcher->getRouter();

            $reply = new \XF\Mvc\Reply\Redirect(
                $router->buildLink('account')
            );
        }
    }
}
 
Last edited:
Top Bottom