使用变量从奏鸣曲管理员发送自定义电子邮件
Send a custom email from sonata admin using variables
我在 sonata admin 中有一个列表视图。我想添加一个列,允许我单击 link 发送电子邮件。 link 操作将知道 table 中该行的变量,以便它可以填写电子邮件。我能够添加列并且可以可视化树枝模板。我已将以下功能添加到管理员 Class:
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);
}
我不知道如何将这些部分连接在一起,这样当我单击 link 时,电子邮件就会发送并包含行中的参数。我有电子邮件处理网站其他区域的表单提交,但需要帮助找出手动执行此操作的方法。
正如您在评论中提到的,您想要做的通常是 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!");
}
}
我最终做了一条自定义路由,并使用@dirk 提到的安全设置对其进行了保护。
我在 sonata admin 中有一个列表视图。我想添加一个列,允许我单击 link 发送电子邮件。 link 操作将知道 table 中该行的变量,以便它可以填写电子邮件。我能够添加列并且可以可视化树枝模板。我已将以下功能添加到管理员 Class:
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);
}
我不知道如何将这些部分连接在一起,这样当我单击 link 时,电子邮件就会发送并包含行中的参数。我有电子邮件处理网站其他区域的表单提交,但需要帮助找出手动执行此操作的方法。
正如您在评论中提到的,您想要做的通常是 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!");
}
}
我最终做了一条自定义路由,并使用@dirk 提到的安全设置对其进行了保护。