Ссылки на приборы между пакетами с помощью Hautleook / AliceBundle

Может ли кто-нибудь предоставить мне пример ссылки на файл данных datafixture между двумя отдельными пакетами, используя HautellokAliceBundle в Simfony 2,7. Мне нужно сослаться на поле автора в моем комплекте статей от FOSUserBundle. Я новичок, пожалуйста, подумайте об этом. Благодарю. Информация в документах AliceBundle не содержит этой проблемы.

Хорошо, это мои приспособления для группы и пользователя:

MB\MBBundle\Entity\Group:
Group1:
__construct: ['Admins']
__construct: ["ROLE_ADMIN"]
Group{2..7}:
__construct(unique): [<randomGroup()>]
__construct: [<randomRole()>]

MB\MBBundle\Entity\User:

User1:
username: admin
email: [email protected]
enabled: 1
plainPassword: admin
roles: [ROLE_ADMIN]
groups: ['@Group1']

User{2..25}:
username: <firstName()>
email: <companyEmail()>
enabled: <boolean(35)>
plainPassword: <lexify()>
roles: [<randomRole()>]
groups: ['@Group*']

и это мой класс загрузчика DataFixtures для пользователя и группы

<?php

namespace MB\MBBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Hautelook\AliceBundle\Alice\DataFixtureLoader;
use Nelmio\Alice\Fixtures;

class MBBundleFixtures extends DataFixtureLoader implements OrderedFixtureInterface
{

protected function getFixtures()
{
return array (
__DIR__.'/User.yml',
);
}

public function rolesFixturesNames ()
{

return ['ROLE_ADMIN', 'ROLE_USER', 'ROLE_DIRECTORS', 'ROLE_TECHNICIANS', 'ROLE_OPERATORS', 'ROLE_ASISTANTS', 'ROLE_AUDITORS', 'ROLE_EXTERNALS'];
}

public function randomRole()
{
$names = ['ROLE_ADMIN', 'ROLE_USER', 'ROLE_PROFILE_ONE', 'ROLE_PROFILE_TWO'];

return $names[array_rand($names)];
}

public function randomGroup()
{
$names = ['Users', 'Technicians', 'Operators', 'Asistants', 'Auditors', 'Externals'];

return $names[array_rand($names)];
}

public function getOrder()
{
return 1;
}
}

И для сущности, на которую нужно ссылаться, данные фиксации к настоящему времени похожи на:

MB\LegalBundle\Entity\LegalTitles:
legalTitles{1..3}:
category: <categoryTitlesNames()>
name:  <text($maxNbChars = 5)>  <numberBetween($min = 100, $max = 999)>
validFrom: <dateTimeBetween('-3 years', 'now')>
validUntil: <dateTimeBetween($validFrom, '30 years')>
validFor:  <numberBetween($min = 10, $max = 30)>
geopointType: <geopointTypesNames()>
latitude: <latitude($min = -5, $max = 15)>
longitude: <longitude($min = 67, $max = 80)>
elevation: <numberBetween($min = 50, $max = 4800)>
dateCreated: null
dateModified: null
author:

Класс загрузчика выглядит так:

<?php
namespace MB\LegalBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Hautelook\AliceBundle\Alice\DataFixtureLoader;
use Nelmio\Alice\Fixtures;

class LegalBundleFixtures extends DataFixtureLoader implements OrderedFixtureInterface
{
protected function getFixtures()
{
return array (
__DIR__.'/LegalTitlesFixtures.yml',
);
}

public function categoryTitlesNames ()
{
$categoryMiningTitles = array (
'CCON',
'LEXP',
'RPP',
'CVA',
);
return $categoryTitles [array_rand($categoryTitles)];
}
public function geopointTypesNames ()
{
$geopointTypes = array (
'UnderGround Access',
'Surface Access',
);
return $geopointTypes [array_rand($geopointTypes)];
}

public function getOrder()
{
return 2;
}
}

Как вы видите, я хочу отослать автора из Entity User в MBBundle к юридическому лицу в LegalBundle. В очередной раз благодарим за помощь

0

Решение

Вы должны загрузить свои приборы в определенном порядке. Первое — держи users а также articles Светильники в отдельных классах / файлах. Затем в ваших классах DataFixtures (где вы загружаете yml файлы) вам нужно будет реализовать OrderedFixtureInterface учебный класс (Doctrine\Common\DataFixtures\OrderedFixtureInterface) — только один метод — getOrder,

use Hautelook\AliceBundle\Alice\DataFixtureLoader;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;

class LoadUserData extends DataFixtureLoader implements OrderedFixtureInterface
{
/**
* {@inheritDoc}
*/
protected function getFixtures()
{
return  array(
__DIR__ . '/users.yml',
);
}

/**
* Get the order of this fixture
*
* @return integer
*/
public function getOrder()
{
return 10;
}
}

Это же для статей:

use Hautelook\AliceBundle\Alice\DataFixtureLoader;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;

class LoadArticlesData extends DataFixtureLoader implements OrderedFixtureInterface
{
/**
* {@inheritDoc}
*/
protected function getFixtures()
{
return  array(
__DIR__ . '/articles.yml',
);
}

/**
* Get the order of this fixture
*
* @return integer
*/
public function getOrder()
{
return 10;
}
}

В yml закрепить ссылку на пользователя следующим образом:

article1:
title: "Article titles"owner: @user1

Больше документации по этой теме: http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html#sharing-objects-between-fixtures

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]