2016-09-23 62 views
0

我使用Hautelook AliceBundle,它使用Faker来生成具有真实世界数据的灯具。Alice Bundle:动态实体循环参数

在爱丽丝,我们可以在YAML文件中使用的参数如下图所示:

parameters: 
    pwd_parameter: anything 

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

是否可以使用参数来产生夹具的动态数字?

我正在寻找解决的办法是要做到这一点:

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}> 

我想:

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

会抛出:

警告:array_merge():参数#1不是阵列

如何动态生成我的实体数量?

+0

这是配置,你不能这样做。除非你创建bundle扩展来读取你的代码中的动态bundle解析并放到参数 – hendrathings

回答

1

由于fixtures yaml配置文件不会与symfony参数合并,因此不可能这样做。

Nelmio\Alice\Fixtures\Fixture\RangeName是用于验证和解析您的示例中的配置的类。 看看RangeName::canBuild(),你会看到验证yaml键的正则表达式。

您可以创建自己的Builder方法,该方法可以随机化插入的夹具行数。

+0

谢谢,它使我朝着正确的方向发展。你知道如何将我的自定义生成器添加到现有生成器?我见过'Fixtures \ Loader'类,但是我找不到如何在我的供应商类中写入我的产品 – goto

+0

这个参数不是symfony的,它被alice使用,你可以在'password:'中看到< {pwd_parameter}>' – goto

+0

看一下:https://github.com/nelmio/alice/pull/136/表示某人已经为它创建了一个拉取请求。这是为1.x,但可能会帮助你。 –