Redirect 如何使用ZfcUser';什么是登录Widget?

Redirect 如何使用ZfcUser';什么是登录Widget?,redirect,login,widget,zend-route,zfcuser,Redirect,Login,Widget,Zend Route,Zfcuser,在我的Zend Framework 2应用程序中,我使用的是,由提供的视图助手。此视图帮助器旨在将登录表单嵌入到另一个页面上 <?php echo $this->zfcUserLoginWidget(); ?> 如果输入的登录数据无效,则login.phtml默认显示一条错误消息: <?php echo $this->formElementErrors($form->get('identity')) ?> 更改此重定向路由会导致错误消息丢失:前面提到

在我的Zend Framework 2应用程序中,我使用的是,由提供的视图助手。此视图帮助器旨在将登录表单嵌入到另一个页面上

<?php echo $this->zfcUserLoginWidget(); ?>
如果输入的登录数据无效,则login.phtml默认显示一条错误消息:

<?php echo $this->formElementErrors($form->get('identity')) ?>
更改此重定向路由会导致错误消息丢失:前面提到的formElementErrors函数仍被调用,但不再有可用消息

问题:
  • 我如何告知LoginWidget输入了无效的登录数据,并且页面不仅被重新加载了

如果是这样的话,我想将输入字段涂成红色…

有同样的问题,我用use Zend\Session\Container解决了这个问题,生成了我自己的消息

修改: Zendskletonapplication\vendor\zf commons\zfc user\src\ZfcUser\Controller\UserController.php

在UserController.php的登录操作中添加/更改

//open session
$session = new Container('loginmsg');

if (!$form->isValid()) {
//$this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($this->failedLoginMessage);
//$this->flashMessenger()->addMessage('not working');
//return $this->redirect()->toUrl($this->url()->fromRoute(static::ROUTE_LOGIN).($redirect ? '?redirect='.$redirect : ''));
$session->loginmsg = 'Username and password do not match.'; //store loginmsg
return $this->redirect()->toRoute('home');
} else {
$session->loginmsg = "";
}
还要修改authenticateAction

if (!$auth->isValid()) {
            $this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($this->failedLoginMessage);
            $adapter->resetAdapters();
            //open session
            $session = new Container('loginmsg');
            $session->loginmsg = 'Username and password do not match.'; //store loginmsg
            return $this->redirect()->toUrl($this->url()->fromRoute(static::ROUTE_LOGIN)
                . ($redirect ? '?redirect='.$redirect : ''));
        }
在主路线中(索引操作):

从索引的角度来看

<?php if(!(empty($loginmsg))):?>
<div class="alert alert-danger" role="alert"><?php echo $loginmsg;?></div>
<?php endif; ?>

为我工作(起初),向我发送消息以获取更多信息

亲切问候,, 大卫

//open session
$session = new Container('loginmsg');

if (!$form->isValid()) {
//$this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($this->failedLoginMessage);
//$this->flashMessenger()->addMessage('not working');
//return $this->redirect()->toUrl($this->url()->fromRoute(static::ROUTE_LOGIN).($redirect ? '?redirect='.$redirect : ''));
$session->loginmsg = 'Username and password do not match.'; //store loginmsg
return $this->redirect()->toRoute('home');
} else {
$session->loginmsg = "";
}
if (!$auth->isValid()) {
            $this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($this->failedLoginMessage);
            $adapter->resetAdapters();
            //open session
            $session = new Container('loginmsg');
            $session->loginmsg = 'Username and password do not match.'; //store loginmsg
            return $this->redirect()->toUrl($this->url()->fromRoute(static::ROUTE_LOGIN)
                . ($redirect ? '?redirect='.$redirect : ''));
        }
    $session = new Container('loginmsg');

    $loginmsg = strip_tags($session->loginmsg);

    $session->getManager()->getStorage()->clear('loginmsg');

    $this->layout('layout/index');

    return new ViewModel(array(
        'loginmsg' => $loginmsg,
    ));
<?php if(!(empty($loginmsg))):?>
<div class="alert alert-danger" role="alert"><?php echo $loginmsg;?></div>
<?php endif; ?>