Получить имя пакета от сущности - PullRequest
1 голос
/ 01 марта 2012

Как вы можете получить имя пакета от сущности?

есть ли какая-либо функция или услуга, чтобы получить это?

$artist = new Artist();

$bundleName = artist->getBundleName();

echo  $bundleName 

myCompanyArtistBundle

Ответы [ 2 ]

0 голосов
/ 05 марта 2015

Я предпочитаю это решение:

/**
 * Get the bundle name from an Entity namespace
 *
 * @return string
 * @author lenybernard
 **/
protected static function getBundleNameFromEntity($entityNamespace, $bundles)
{
    $dataBaseNamespace = substr($entityNamespace, 0, strpos($entityNamespace, '\\Entity\\'));
    foreach ($bundles as $type => $bundle) {
        $bundleRefClass = new \ReflectionClass($bundle);
        if ($bundleRefClass->getNamespaceName() === $dataBaseNamespace) {
            return $type;
        }
    }
}

Примечание: переменная $bundles является результатом вызова метода getBundles () службы kernel.

0 голосов
/ 02 марта 2012

Я нашел решение, но не знаю, хорошее ли оно:

<?php
    $rootEntityName = "company\myNamespace\Entity\user";

    $bundles = $context->get('kernel')->getBundles();
    $bundleName = '';

    foreach($bundles as $type=>$bundle){
        $className = get_class($bundle);

        $entityClass = substr($rootEntityName,0,strpos($rootEntityName,'\\Entity\\'));

        if(strpos($className,$entityClass)=== FALSE){
            echo get_class($bundle).'<br>';
            echo $type.'<br>';
        }else{
            $bundleName = $type;
        }
    }
    echo $bundleName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...