我正在处理服务功能,目的是处理用于验证电子邮件地址的表单。作为电子邮件地址身份验证完整性的一部分,我将临时密码设置为超时。
第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
答案 0 :(得分:1)
处理请求/响应(包括重定向)是控制器问题,不应该在您的服务层中。
您可以在服务中抛出异常(每种故障类型一个)并在控制器中捕获它们,然后根据需要重定向。
另一种方法是从服务方法返回一个值,该值标识失败类型并在控制器中正确处理。
我个人的偏好是异常方法。
您收到的错误是由于尝试将数据库结果(Membership类的实例)用作数组。
您显示的语法错误看起来像是JavaScript,并且您没有提供足够的上下文来提供建议