Symfony 4 和 DoctrineEncryptBundle - 在哪里定义 yaml 配置?

1 php symfony4

我正在尝试加密医疗应用程序的数据,这就是我找到 DoctrineEncryptBundle 的方式(https://packagist.org/packages/michaeldegroot/doctrine-encrypt-bundle

我仍然是 symfony 4 的新手,文档给出了似乎是以前的 Symfony 版本的方法。

我已经下载了该捆绑包(作曲家需要 michaeldegroot/doctrine-encrypt-bundle)

对于步骤 2:“启用数据库加密捆绑包”文档中的解释与我在 SF4 中所做的比较 这似乎是正确的。

然后,SF4中没有config.yml,我不知道在哪里定义配置(加密器类和密钥文件的路径)。

这个yaml =>

ambta_doctrine_encrypt:
    encryptor_class: Halite # or Defuse
    secret_directory_path: '%kernel.project_dir%'   # Path where to store the keyfiles
Run Code Online (Sandbox Code Playgroud)

文档:https://github.com/michaeldegroot/DoctrineEncryptBundle/blob/master/Resources/doc/configuration.md

我的文件实体患者(我想加密)

`

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Ambta\DoctrineEncryptBundle\Configuration\Encrypted;

/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="App\Repository\PatientRepository")
* @ORM\Table(name="patient")
*/
class Patient {

 /**
 * @var string
 * @Encrypted
 * @ORM\Column(type="string")
 */
private $nom;`
Run Code Online (Sandbox Code Playgroud)

控制器:

public function ajouterPatient(Request $request)
{

    $patient = new Patient();
    $form = $this->createForm(PatientType::class, $patient);

    if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {

        $em = $this->getDoctrine()->getManager();
        $patient->setNomsAffichage($patient->getNom()." ".$patient->getPrenom());
        $patient->setActif(true);

        $em->persist($patient);
        $em->flush();

        return $this->redirectToRoute('menu_patients');
    }
    return $this->render('Patients/ajouterPatient.html.twig', array(
      'form' => $form->createView(),
    ));
}
Run Code Online (Sandbox Code Playgroud)

我想我应该在 service.yml 中定义一些东西,比如捆绑包的链接,但我不知道如何做。

任何帮助将不胜感激。

小智 5

我知道这是一个老问题,但对于那些仍然想知道在 Symfony 4 中为这个包定义配置 yaml 文件的人来说,这里是我得到的答案。

在文件config/bundles.php
末尾添加此行来定义 Ambta Symfony 包:

return [  
    ...
    Ambta\DoctrineEncryptBundle\AmbtaDoctrineEncryptBundle::class => ['all' => true]
];
Run Code Online (Sandbox Code Playgroud)

在以下位置创建一个新的yaml文件:config/packages/orm_services.yaml 这里可以放置配置。例如:

ambta_doctrine_encrypt:
  encryptor_class: Halite
  secret_directory_path: '%kernel.project_dir%'
Run Code Online (Sandbox Code Playgroud)