0

我使用alice-bundle并有一些固定装置

AppBundle\Entity\Admin:
admin{1..3}:
    username: admin<current()>
    firstName: <firstName('male')>
    lastName: <lastName()>
    password: <encodePassword(@self, @self->username)>

在旧版本中,我创建FixtureLoader类扩展DataFixtureLoader并为我的自定义伪造者创建公共函数encodePassword,我猜很简单

use Hautelook\AliceBundle\Alice\DataFixtureLoader;
use Symfony\Component\Security\Core\User\UserInterface;
class FixtureLoader extends DataFixtureLoader
{
/**
 * {@inheritDoc}
 */
protected function getFixtures()
{
    $prefix = __DIR__ . '/../Fixture/';
    return [
        $prefix . 'admin.yml',
        $prefix . 'city.yml',
        $prefix . 'country.yml',
        $prefix . 'location.yml',
        $prefix . 'user.yml',
        $prefix . 'voteSetting.yml',            
        $prefix . 'project.yml'
    ];
}

/**
 * @param UserInterface $user
 * @param $plainPassword
 * @return string
 */
public function encodePassword(UserInterface $user, $plainPassword)
{
    return $this->container->get('security.password_encoder')->encodePassword($user, $plainPassword);
}
}

但是 atm,当我安装 bundle 时,我很惊讶,DataFixtureLoader没有找到,我猜不推荐使用。还有我的问题,如何创建我的自定义伪造者?

4

1 回答 1

0

U sue "hautelook/alice-bundle": "^1.3.1" and extend from abstract class

use Hautelook\AliceBundle\Doctrine\DataFixtures\AbstractLoader;
use Nelmio\Alice\Fixtures;
use Symfony\Component\Security\Core\User\UserInterface;

class FixtureLoader extends AbstractLoader
{
/**
 * {@inheritdoc}
 */
public function getFixtures()
{
    return [
        __DIR__.'/../Fixtures/admin.yml',
    ];
}

/**
 * @param UserInterface $user
 * @param $plainPassword
 *
 * @return string
 */
public function encodePassword(UserInterface $user, $plainPassword)
{
    return $this->container->get('security.password_encoder')->encodePassword($user, $plainPassword);
}
于 2017-11-07T10:56:15.430 回答