Symfony2
。在controller
中,我想定义一个我的捆绑的Resources/public/pdf
目录的路径。
如果我使用__DIR__
,我会获得我的捆绑包的Controller目录的路径; if $this->get('kernel')->getRootDir()
,App目录的路径。无论哪种方式,我都无法移回上一级目录。
我该怎么办?
PS。 $this->get('kernel')->getRootDir().'/../src/
之类的内容会呈现.../app/../src/
。
$path001 = $this->get('kernel')->getRootDir().'/';
$path002 = explode('/', $path001);
$path003 = array_pop($path002);
$path003bis = array_pop($path002);
$path004 = implode("/", $path002);
$path_pdf = $path004.'/src/Mario/<MyBundle>/Bundle/Resources/public/pdf';
有更好的方法吗?
答案 0 :(得分:2)
如果困扰你,realpath函数(http://php.net/manual/en/function.realpath.php)可以清理所有点点内容。
// From a controller
$resourceDir = realpath(__DIR__ . '/../Resources');
当然,这仅在控制器位于固定目录中且永不移动时才有效。
我喜欢使用依赖注入扩展来设置参数。
class CeradProjectExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter(
'sportacus_project_resources_dir',
realpath(__DIR__ . '/../Resources')
);
可以从容器中注入或检索路径。
答案 1 :(得分:0)
$kernel = $this->container->getService('kernel');
$path = $kernel->locateResource('@MarioMyBundle/Resources/public/pdf/file.pdf');