如何 return 处理表单的服务中的重定向

How to return a redirect within Service which processes a form

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

第 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" 更改为

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

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

SyntaxError: unterminated string literal

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

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

另一种方法是 return 服务方法中的一个值,该值标识故障类型并在控制器中进行适当处理。

我个人比较喜欢异常方法。

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

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