0

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 を参照する必要があります。ご協力ありがとうございました

4

1 に答える 1