我试图用一些User对象预先填充数据库,但是当我调用$user->setPassword('some-password');
并保存用户对象时,字符串'some-password'直接存储在数据库中,而不是哈希+盐渍密码。
我DataFixture类:
// 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();
}
}
及相关数据库输出:
id username email salt password
1 System [email protected] 3f92m2tqa2kg8cookg84s4sow80880g test
感谢您的UserManager提示! – 2012-02-10 03:25:16
当我尝试在DB上创建灯具时,我无法调用“this”对象上的“get”方法: PHP致命错误:调用未定义的方法[...]/UserFixtures :: get() – JavierIEH 2012-09-04 13:30:57
@JavierIEH你需要在你的fixtures类中实现ContainerAwareInterface和ContainerInterface。请参阅'在灯具中使用容器':https://raw.github.com/doctrine/DoctrineFixturesBundle/master/Resources/doc/index.rst。 Anton Babenko,你可以修改你的答案来表明这一点吗? – nealio82 2012-09-25 10:28:57