Simfony 2,7 で HautellokAliceBundle を使用して、2 つの個別のバンドル間で datafixture yml ファイルを参照する例を教えてください。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: admin@local.com
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;
}
}
ご覧のとおり、MBBundle の User Entity から LegalBundle の Legal Entity へ Author を参照する必要があります。ご協力ありがとうございました