Symfony 3 Datafixtures с использованием значений parameter.yml

Я использую LDAP в моем User данные и я не хочу жестко задавать параметры входа в систему LDAP. Изначально я попробовал это:

$options = array(
'host' => '%ldap_host%',
'port' => '%ldap_port%',
'useSsl' => true,
'username' => '%ldap_username%',
'password' => '%ldap_password%',
'baseDn' => '%ldap_baseDn_users%'
);

Но это не сработало. Я провел некоторое исследование и понял, что мне нужно включить контейнер в мои светильники. Тем не менее, именно в этот момент я не уверен, каким будет мой следующий шаг.

Как я понимаю, мне нужно использовать контейнер, и это get способ получить сервис, содержащий параметры, но я не знаю, что это такое:

$this->container->get('parameters');

Не работает, поэтому мне интересно, что я должен использовать.

Мой полный datafixture выглядит следующим образом:

class LoadFOSUsers extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;

public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}public function load(ObjectManager $manager)
{
$this->container->get('parameters');

// Not sure how to access param values.
$options = array(
'host' => '%ldap_host%',
'port' => '%ldap_port%',
'useSsl' => true,
'username' => '%ldap_username%',
'password' => '%ldap_password%',
'baseDn' => '%ldap_baseDn_users%'
);

$ldap = new Ldap($options);
$ldap->bind();

$baseDn = '%ldap_baseDn_users%';
$filter = '(&(&(ObjectClass=user))(samaccountname=*))';
$attributes=['samaccountname', 'dn', 'mail','memberof'];
$result = $ldap->searchEntries($filter, $baseDn, Ldap::SEARCH_SCOPE_SUB, $attributes);

foreach ($result as $item) {
echo $item["dn"] . ': ' . $item['samaccountname'][0] . PHP_EOL;
}
}

public function getOrder()
{
// the order in which fixtures will be loaded
// the lower the number, the sooner that this fixture is loaded
return 8;
}
}

1

Решение

Вы просто должны получить их из контейнера через getParameter('name') или получить их все в сумке через getParameterBag(),

Так:

    $options = array(
'host' => $this->container->getParameter('ldap_host'),
'port' => $this->container->getParameter('ldap_port'),
'useSsl' => true,
'username' => $this->container->getParameter('ldap_username'),
'password' => $this->container->getParameter('ldap_password'),
'baseDn' => $this->container->getParameter('ldap_baseDn_users')
);

и т.п.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]