Symfony 将当前变量传递到Alice Nelmio Bundle Fixtures 2.x中的自定义伪造程序

Symfony 将当前变量传递到Alice Nelmio Bundle Fixtures 2.x中的自定义伪造程序,symfony,nelmio-alice,alice-fixtures,Symfony,Nelmio Alice,Alice Fixtures,我已经在Symfony中创建了一个fixtures loader类,其中包含定制的fakers 其中一个自定义函数应根据非随机值从名称数组返回名称。在使用Alice 2.x创建实体集合时,我希望此值成为$current变量 因为我们可以在fixtures.yml文件中执行类似的操作: user{1..10}: name: someName<current()> 我试过$current,current()。。。。 没有成功 谢谢 我认为你做不到。 在我看来,最好的选择是在处理器中

我已经在Symfony中创建了一个fixtures loader类,其中包含定制的fakers

其中一个自定义函数应根据非随机值从名称数组返回名称。在使用Alice 2.x创建实体集合时,我希望此值成为$current变量

因为我们可以在fixtures.yml文件中执行类似的操作:

user{1..10}:
  name: someName<current()>
我试过$current,current()。。。。 没有成功


谢谢

我认为你做不到。 在我看来,最好的选择是在处理器中选择名称:

public function postProcess($object)
{
    if (!$object instanceof User) {
        return false;
    }

    $object->setName($this->pickFromArray($object));

    return true;
}

其中,
pickFromArray()
是处理器中的一个方法。

您需要使用
函数的返回值作为参数。在hautelook/AliceBundle上测试

user{1..10}: 
  name: <pickFromArray(<current()>)>
用户{1..10}:
姓名:

谢谢纪尧姆!我有很多名字,尽管我不在乎顺序,但我不想使用随机函数,因为我想避免重复。我想我可以通过使用一个全局静态变量或某种类型的变量来实现这一点。好吧,在这种情况下,您需要创建自己的Faker格式化程序。看,你可以生成你想要的任何数据。此外,您还可以在yml文件中添加
(unique)
关键字,以避免重复:
user{1..10}: 
  name: <pickFromArray(<current()>)>