はじめに
こんばんは。
今回もSymfony5です。
かんたんな備忘録です。
hautelook/AliceBundle で ymlのfixtureを作ったさい、UserPasswordEncorderでパスワードを encodeしてみました。
本題
まず、ymlで実行する関数を定義するため、Providerを作ります。
<?php declare(strict_types=1); namespace App\DataFixtures\Providers; use App\Entity\User; use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; class UserPasswordEncodeProvider { private UserPasswordEncoderInterface $encoder; public function __construct(UserPasswordEncoderInterface $encoder) { $this->encoder = $encoder; } public function encodeUserPassword(string $plainPassword): string { return $this->encoder->encodePassword(new User(), $plainPassword); } }
次に、services.ymlにて、先程作ったProviderを登録します。
services: App\DataFixtures\Providers\UserPasswordEncodeProvider: tags: [ { name: nelmio_alice.faker.provider } ]
これで準備完了です。 fixtureのymlで以下のように使えるようになります。
App\Entity\User: user1: email: 'xxxxxxx@gmail.com' password: <encodeUserPassword(secret)> name: kojirock
終わりに
新しいことやると、楽しいですね。
かんたんですが以上です。