1
エンティティからバンドル名を取得するにはどうすればよいですか?エンティティからバンドル名を取得
これを取得する機能やサービスはありますか?
$artist = new Artist();
$bundleName = artist->getBundleName();
echo $bundleName
myCompanyArtistBundle
エンティティからバンドル名を取得するにはどうすればよいですか?エンティティからバンドル名を取得
これを取得する機能やサービスはありますか?
$artist = new Artist();
$bundleName = artist->getBundleName();
echo $bundleName
myCompanyArtistBundle
私は解決策を見つけたが、それは良いものかどうか分からない:
<?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;
を、私はこのソリューションを好む:
/**
* 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()メソッドを呼び出した結果です。