重定向到路由不在Zend Framework中工作

时间:2015-11-11 06:15:20

标签: php zend-framework2 google-oauth

我正在为我的应用程序使用Zend Framework 2.2.4,我添加了一个“登录Google'登录页面的选项。但它没有在确切的页面上重定向,它会返回到登录页面并放置一个#

e.g。     myapp.dev/login#

这是“与Google登录”的方法,它位于我的LoggingController.php

public function loginSocialsAction()
{
    $googleClient = $this->getGoogleClient();

    $code = $this->params()->fromQuery('code', '');

    $googleOauthV2 = new \Google_Oauth2Service($googleClient);

    #if successful validation from Google
    if (isset($code)) {
        $googleClient->authenticate($code);

        $gdata = $googleOauthV2->userinfo->get();
        $user = $this->getUsersTable()->getByEmail($gdata['email']);
    }

    if ($googleClient->getAccessToken() && isset($gdata['email'])) {

        if (!empty($user)) {
            $user->role = $this->getRoleTable()->get($user->roleId);

            $session = new Session\Container('currentuser');
            $session->user = $user;

            $this->initializeSession($session);
            // if success, go to records page
            return $this->redirect()->toRoute('records');

        } else {
            $message = 'The user is not in the system.';
            $this->flashMessenger()->setNamespace('error')->addErrorMessage($message);
            return $this->redirect()->toRoute('login');
        }

    } else {
        $message = 'Google auth failed.';
        $this->flashMessenger()->setNamespace('error')->addErrorMessage($message);
        return $this->redirect()->toRoute('login');
    }
}

请提及我错过或您想知道的事情。任何想法都会有所帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试重定向。

用于控制器重定向

return $this->redirect()->toUrl($this->getRequest()->getBaseUrl().'/any/path/here/'.<<ID HERE, IF YOU WANT>>);

用于视图重定向

在这种情况下,点按取消按钮会重定向,重置值。

<button type="reset"   
   <a  href="<?php echo $this->basePath('your/path/here/'. <<ID HERE IF ANY>> ) ?>">Cancel
         </a>
</button>

可以看到明显的差异,因为使用getBaseUrl()重定向控制器的网址,而使用{重定向视图网址重定向{1}}。