代码之家  ›  专栏  ›  技术社区  ›  coreyg

使用变量从Sonata管理员发送自定义电子邮件

  •  0
  • coreyg  · 技术社区  · 6 年前

    我在Sonata管理中有一个列表视图。我想添加一个允许我单击链接发送电子邮件的栏。链接操作将知道表中该行的变量,以便它可以填充电子邮件。我可以添加这个列,并且可以可视化一个小树枝模板。我已将以下函数添加到管理类:

     public function sendEmail( \Swift_Mailer $mailer)
        {
            $message = (new \Swift_Message('some email'))
                ->setFrom('contact@example.com')
                ->setTo('contact@example.com')
                ->setBody(
                    $this->renderView(
                        'emails/response.html.twig',
                        array('manufacturer' => $manuvalue, 'modelnum' => $modelnumvalue, 'email' => $email)
                    ),
                    'text/html');
    
            $mailer->send($message);
    
        }
    

    我一直在研究如何将这些部分连接在一起,这样当我单击链接时,就会发送电子邮件并包含行中的参数。我有电子邮件在网站的其他区域处理表单提交,但需要帮助找出手动执行此操作的方法。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Orthal    6 年前

    Custom Action

    ...
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
    use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
    ...
    
    //AuthorizationCheckerInterface injected as authorizationChecker
    
    public function customAction($id){
        $object = $this->admin->getSubject();
        if (!$object) {
            throw new NotFoundHttpException(sprintf('unable to find the object with id: %s', $id));
        }
    
        // Check access with role of your choice
        $access = $this->authorizationChecker->isGranted('ROLE_ADMIN');
        if($access){
    
        //Do your action
    
        } else {
            throw $this->createAccessDeniedException("You don't have the rights to do that!");
        }
    }
    
        2
  •  0
  •   coreyg    6 年前