Tôi đang cố gắng điền trước một cơ sở dữ liệu với một số đối tượng User, nhưng khi tôi gọi $user->setPassword('some-password');
và sau đó lưu đối tượng người dùng, chuỗi 'some-password' được lưu trữ trực tiếp trong cơ sở dữ liệu, thay vì mật khẩu băm + muối.
My DataFixture lớp:
// Acme/SecurityBundle/DataFixtures/ORM/LoadUserData.php
<?php
namespace Acme\SecurityBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Acme\SecurityBundle\Entity\User;
class LoadUserData implements FixtureInterface
{
public function load(ObjectManager $manager)
{
$userAdmin = new User();
$userAdmin->setUsername('System');
$userAdmin->setEmail('[email protected]');
$userAdmin->setPassword('test');
$manager->persist($userAdmin);
$manager->flush();
}
}
Và đầu ra cơ sở dữ liệu liên quan:
id username email salt password
1 System [email protected] 3f92m2tqa2kg8cookg84s4sow80880g test
Cảm ơn mẹo UserManager! –
Tôi không thể gọi phương thức "get" trên đối tượng "this" khi tôi cố gắng xây dựng các đồ đạc lên DB: Lỗi nghiêm trọng PHP: Gọi đến phương thức không xác định [...]/UserFixtures :: get() – JavierIEH
@JavierIEH Bạn cần triển khai ContainerAwareInterface và ContainerInterface trong lớp đồ đạc của bạn. Xem 'sử dụng vùng chứa trong các đồ đạc' tại đây: https://raw.github.com/doctrine/DoctrineFixturesBundle/master/Resources/doc/index.rst. Anton Babenko, bạn có thể sửa đổi câu trả lời của mình để hiển thị điều này không? – nealio82