2012-03-01 10 views
1

エンティティからバンドル名を取得するにはどうすればよいですか?エンティティからバンドル名を取得

これを取得する機能やサービスはありますか?

$artist = new Artist(); 

$bundleName = artist->getBundleName(); 

echo $bundleName 

myCompanyArtistBundle

答えて

0

私は解決策を見つけたが、それは良いものかどうか分からない:

<?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; 
0

を、私はこのソリューションを好む:

/** 
* 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変数は、kernelサービスでgetBundles()メソッドを呼び出した結果です。

関連する問題