Wie zu injizieren service in Symfony 2 Daten-Befestigungen?
Wie kann ich Spritzen ein service in Symfony2/Doctrine2 Daten Armaturen? Ich möchte zum erstellen von dummy-Benutzer und müssen die security.encoder_factory
- service zu codieren meine Passwörter.
Versuchte ich die Definition meiner Daten-Vorrichtung as a service
myapp.loadDataFixture:
class: myapp\SomeBundle\DataFixtures\ORM\LoadDataFixtures
arguments:
- '@security.encoder_factory'
Dann in meine Daten Leuchte
class LoadDataFixtures implements FixtureInterface {
protected $passwordEncoder;
public function __construct($encoderFactory) {
$this->passwordEncoder = $encoderFactory->getEncoder(new User());
}
public function load($em) {
Aber habe so etwas wie
Warning: Missing argument 1 for
...\DataFixtures\ORM\LoadDataFixtures::__construct(), aufgerufen im ...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Mit dem Container, in die Leuchten Abschnitt beschreibt genau das, was Sie brauchen.
Alles, was Sie tun müssen, ist die Implementierung der
ContainerAwareInterface
in Ihre Halterung. Dadurch wird die Symfony zu injizieren, die container per Setter-Injektion. Ein Beispiel-entity würde wie folgt Aussehen:Du nicht müssen Sie zum registrieren der Vorrichtung as a service. Stellen Sie sicher, dass der import der verwendeten Klassen über
use
.Für DoctrineFixturesBundle v. 3, Sie brauchen nicht zu Spritzen den Behälter zu injizieren und einen einfachen service. Sie können normale dependency injection statt:
Allerdings, wenn Sie tun, müssen die container, Sie können es über die $this->container-Eigenschaft.
Dokumentation hier.