在我的 Zend Framework 2 应用程序中,我使用了zfcUserLoginWidget,这是一个由ZfcUser提供的 View Helper 。此 View Helper 旨在将登录表单嵌入到另一个页面上。
<?php echo $this->zfcUserLoginWidget(); ?>
我在我的index.phtml中使用这个 View Helper,它由我的IndexController控制。按下“登录”按钮调用UserController的loginAction函数。如果输入的登录数据无效,则UserController默认重定向到登录页面:
class UserController extends AbstractActionController
{
const ROUTE_LOGIN = 'zfcuser/login'; // Leads to 'user/login'
public function loginAction()
{
// ...
if (!$form->isValid()) {
$this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($this->failedLoginMessage);
return $this->redirect()->toUrl($this->url()->fromRoute(static::ROUTE_LOGIN).($redirect ? '?redirect='. rawurlencode($redirect) : ''));
}
// ...
}
}
如果输入的登录数据无效,则login.phtml默认显示错误消息:
<?php echo $this->formElementErrors($form->get('identity')) ?>
在我的应用程序中,我已将重定向路由更改回由IndexController控制的index.phtml(到 LoginWidget),而不是由UserController控制的login.phtml:
const ROUTE_LOGIN = 'home'; // Leads to 'index/index'
更改此重定向路由会导致错误消息丢失:之前提到的formElementErrors函数仍然被调用,但没有可用的消息了。
问题:
- 我如何告知 LoginWidget 已经输入了无效的登录数据并且页面不仅被简单地重新加载的事实?
如果是这种情况,我想将输入字段着色为红色......