2016-09-23 1 views
0

Ich verwende Hautelook AliceBundle, die Faker verwenden, um Fixtures mit realen Daten zu generieren.Alice Bundle: dynamische Einheit Loop-Parameter

In Alice, können wir Parameter in unserer YAML-Datei wie unten verwenden:

parameters: 
    pwd_parameter: anything 

My\UserEntity: 
    #generate 10 users with password equals to my parameter 
    user_{1..10}: 
    password:  '<{pwd_parameter}>' 

Ist es möglich, Parameter zu verwenden dynamische Anzahl von Vorrichtungen zu generieren?

Die Lösung Ich stehe auf, dies zu tun:

parameters: 
    pwd_parameter: anything 
    nb_users:  10 

My\UserEntity: 
    #generate nb_users users with password equals to my parameter 
    user_{1..nb_users}: #<---THIS IS THE PROBLEM 
     password: '<{pwd_parameter}> 

Ich habe versucht:

user_{1.. nb_users } 
user_{1.. <nb_users> } 
user_{1..<{nb_users}> } 
user_{1..<{nb_users}> } 

die wirft:

Warnung: array_merge(): Argument # 1 ist kein Array

Wie kann ich meine Anzahl von Entitäten dynamisch generieren?

+0

Es ist Konfiguration, Sie können das nicht tun. Es sei denn, Sie erstellen Bundle-Erweiterung, um dynamische Bundle-Pars von Ihrem Code zu lesen und an Parameter – hendrathings

Antwort

1

Es ist nicht möglich, so etwas zu tun, da Fixtures yaml-Konfigurationsdateien nicht mit Symfony-Parametern zusammengeführt werden.

Nelmio\Alice\Fixtures\Fixture\RangeName ist die Klasse, die zum Validieren und Parsen der Konfiguration Ihres Beispiels verwendet wird. Werfen Sie einen Blick auf RangeName::canBuild() und Sie sehen regulären Ausdruck, der Yaml-Schlüssel validiert.

Sie könnten Ihre eigene Builder-Methode erstellen, mit der die Anzahl der eingefügten Fixture-Zeilen zufällig verteilt wird.

+0

Danke, es brachte mich in die richtige Richtung. Wissen Sie, wie ich meinen benutzerdefinierten Builder zu dem vorhandenen hinzufügen kann? Ich habe die 'Fixtures \ Loader'-Klasse gesehen, aber ich finde nicht, wie ich meine hinzufügen kann, ohne in meine Vendor-Klasse – goto

+0

zu schreiben. Die Parameter sind nicht symfony one, sie wird von alice verwendet, wie Sie in' password: 'sehen können {pwd_parameter}> '' – goto

+0

Werfen Sie einen Blick auf: https://github.com/nelmio/alice/pull/136/commits jemand hat bereits eine Pull-Anfrage dafür erstellt. Es ist für 1.x, aber könnte Ihnen helfen. –

Verwandte Themen