将用户友好的消息返回给视图


Getting user friendly messages back to the View

这是用户如何在我的应用程序中登录的摘要(直到验证数据):

  1. 提交登录表单

  2. 路由器知道用户想去哪里

  3. 正确的Controller初始化

  4. RecognitionService启动,login()方法运行

  5. login()方法中,我设置了User域对象中提供的用户名和密码。

  6. 我的User域对象将检查用户名和密码是否正确

所有这些都很好,除了当输入的用户名包含无效字符,然后从我的域对象以一种整洁的方式将错误消息返回到View

此刻,我让我的域对象将消息(实际上是消息的数组键)返回到RecognitionService,然后保留消息数组键,然后在View中,我从RecognitionService检索消息数组键并使用它来显示正确的消息,但我有一种感觉有更好的方法,有什么想法吗?

谢谢。

控制器和当前视图应该共享用于实例化服务的相同工厂,以确保每个服务只初始化一次。

从控制器:

public function postLogin( $request )
{
    $recognition = $this->serviceFactory->create('Recognition');
    $recognition->authenticate( $request->getParameter('username'),
                                $request->getParameter('password') );
}
从观点:

public function login()
{
    $recognition = $this->serviceFactory->create('Recognition');
    if ( $recognition->hasAuthenticationError() )
    {
        header('Location: /login');
    }
    if ( $recognition->hasChangedState() ) //was POST, PUT or DELETE call
    {
        header('Location: ./');
    }
}
public function render()
{
    // .. make the html/json/whatever
}

像这样…这是我的2美分。老实说,如何实现这个视图完全取决于你自己。