Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将对象属性与hautelook/AliceBundle中的字符串连接_Php_Symfony_Fixtures - Fatal编程技术网

Php 将对象属性与hautelook/AliceBundle中的字符串连接

Php 将对象属性与hautelook/AliceBundle中的字符串连接,php,symfony,fixtures,Php,Symfony,Fixtures,我正在使用Symfony 2捆绑包中的Alice加载装置。我正在尝试使用父实体的名称自定义实体的名称。具体来说,我有一个实体,@Report1,它的@Report1->name属性返回测试报告1 我正在尝试创建名为testreport1scenario1的子实体。以下是我的夹具文件片段: AppBundle\Entity\Scenario: Scenario1: report_id: @Report1->id name: @Report1->name 'Scena

我正在使用Symfony 2捆绑包中的Alice加载装置。我正在尝试使用父实体的名称自定义实体的名称。具体来说,我有一个实体,
@Report1
,它的
@Report1->name
属性返回
测试报告1

我正在尝试创建名为
testreport1scenario1
的子实体。以下是我的夹具文件片段:

AppBundle\Entity\Scenario:
  Scenario1:
    report_id: @Report1->id
    name: @Report1->name 'Scenario 1'
我得到的只是文字
@Report1->名称“场景1”


如果我从
名称:
属性中删除
'Scenario 1'
字符串,我将得到父报表的实际名称。

我使用的是hautelook/alice bundle 1.3.1(nelmio/alice 2.2.0和Fzaninoto/faker 1.6.0)和PHP5.6

您可以使用配置自定义数据提供程序,并在设备文件中使用它

在AppBundle/DataFixtures/ORM/DataLoader.php中:

namespace AppBundle\DataFixtures\ORM;

use Hautelook\AliceBundle\Doctrine\DataFixtures\AbstractLoader;

class DataLoader extends AbstractLoader
{
    /**
     * {@inheritdoc}
     */
    public function getFixtures()
    {
        return [
            __DIR__.'/../Fixtures/user.yml',
        ];
    }

    public function concat(...$strings)
    {
        $result = '';

        foreach ($strings as $string) {
            $result .= $string;
        }

        return $result;
    }
}
现在您可以像这样使用自定义数据提供程序

在AppBundle/DataFixtures/Fixtures/user.yml中:

AppBundle\Entity\User:
    user-{1..10}:
        firstname: <firstname()>
        lastname: <lastname()>

        email: <concat(@self->firstname, ".", @self->lastname, "@gmail.com")>
        plainPassword: 123
        username: <concat(@self->firstname, ".", @self->lastname)>

另一个对我有效的选项是使用:

App\Entity\User:
用户{1..150}:
名字:“”
姓氏:“”
电子邮件:'firstname,@self->lastname)>'

最初的Alice实现位于GitHub上的
nelmio/Alice
您是否尝试过创建用于连接字符串的自定义数据提供程序?还没有,不过谢谢你的提示。我将对此进行调查,并在这里发布结果。
    public function concat()
    {
        $result = '';

        foreach (func_get_args() as $string) {
            $result .= $string;
        }

        return $result;
    }
App\Entity\User:
  users{1..150}:
    firstname: '<firstname()>'
    lastname: '<lastname()>'
    email: '<sprintf("%s.%s@gmail.com", @self->firstname, @self->lastname)>'