因此,我在编辑操作中创建了一个会话变量,以防止每次编辑订单时都向指定的主管发送电子邮件。
这看起来效果很好,但我想让它在半小时内发送一次邮件,以降低用户在短时间内编辑邮件时发送的邮件数量。如果主管在编辑中发生变化,我也想发送邮件而不管半小时。
这是我到目前为止所拥有的;
public function editAction($id)
{
$request = $this->getRequest();
$session = $request->getSession();
$order = $em->getRepository('Order')->find($id);
$sessionName = $order . 'MailerSession';
//do some extra stuff...
if ($editForm->isSubmitted() && $editForm->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($order);
$em->flush();
if (false === $session->has($sessionName)) {
$this->get('bss.pmod.mailer')
->sendApprovalEmailMessage($object, $object->getFirstApprover(), 'first.approval.template');
}
$sessionData = array('order' => $order, 'supervisorId' => $order->getFirstApprover(), 'time' => new \DateTime(date('Y-m-d H:i:s')));
$session->set($sessionName, $sessionData);
return $this->redirectToRoute('show', array('id' => $order->getId()));
}
}
似乎它的工作是不在同一个会话中再次发送邮件。 (如果该部分出现问题,请不要犹豫。)
但是我在sessionData中添加了supervisorId和当前的dateTime,但是如何使用它来阻止电子邮件在编辑后半小时内发送给同一个主管,并且仍然会向新分配的主管发送电子邮件即使它仍然在半小时内?
我还不太了解这段话。我现在正在做一个Symfony和php的学生大约4个月,这是我第一次需要实现一个会话吗?
请帮忙吗?