如何在Service中返回处理表单的重定向

时间:2015-01-24 00:12:29

标签: forms redirect service zend-framework2

我正在处理服务功能,目的是处理用于验证电子邮件地址的表单。作为电子邮件地址身份验证完整性的一部分,我将临时密码设置为超时。

第1步:用户提供帐户#和临时密码

步骤2:验证者验证这两个是否正确。

步骤3:将表单传递给服务进行处理。此处理的第一步是检查临时密码是否已超时。如果临时密码超时,我想将用户重定向到可能请求新临时密码的表单。我创建了这个" if / then / else"导致重定向:

} else {
    return ['flash' => 'Password Timed Out' , $result['redirect'] => '/subscription-center-temporary-password-resend'];
}

我收到的错误是

Fatal error:  Cannot use object of type Database\Entity\Member\Membership as array

$ result是分配给用于检索临时密码过期字段的数据库查询的变量。

当我改变"返回"到

return ['flash' => 'Password Timed Out' , 'redirect' => '/subscription-center-temporary-password-resend'];

表单提交重定向,该重定向用于调出帐户身份验证表单(用户提供自己的密码并设置帐户首选项)。我收到错误消息:

SyntaxError: unterminated string literal

1 个答案:

答案 0 :(得分:1)

处理请求/响应(包括重定向)是控制器问题,不应该在您的服务层中。

您可以在服务中抛出异常(每种故障类型一个)并在控制器中捕获它们,然后根据需要重定向。

另一种方法是从服务方法返回一个值,该值标识失败类型并在控制器中正确处理。

我个人的偏好是异常方法。

您收到的错误是由于尝试将数据库结果(Membership类的实例)用作数组。

您显示的语法错误看起来像是JavaScript,并且您没有提供足够的上下文来提供建议