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

时间:2013-03-24 10:13:03

标签: php oop model-view-controller

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

  1. 提交登录表单。

  2. 路由器会找出用户尝试去的地方。

  3. 初始化了正确的Controller

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

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

  6. 我的User域对象将检查用户名和密码是否为 通过检查其类型,长度,格式等有效。

  7. 所有这一切都很好,除非输入的用户名包含无效字符,然后将我的域对象的错误消息以干净整洁的方式返回View

    目前我正在使用我的域对象将消息(实际上是消息的数组键)返回到RecognitionService,然后保留到消息数组键,然后保存在View I中从RecognitionService检索消息数组键并使用它来显示正确的消息,但我觉得有更好的方法,任何想法吗?

    感谢。

1 个答案:

答案 0 :(得分:2)

控制器和当前视图应共享同一工厂以实例化服务,这可确保每个服务仅初始化一次。

来自控制器:

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美分。老实说,你如何实现视图完全取决于你。