Symfony4:如何从根目录获取/public路径及图片目录?
在Symfony4中获取Public目录及图片路径的方法
嗨,我来帮你搞定这个问题!Symfony4的目录结构和Symfony3有不少变化,原来的web目录改成了public,对应的获取方式也有所调整,下面分情况给你说明:
1. 获取根目录下的/public路径
你在Symfony3里用的是$this->get('kernel')->getRootDir() . '/../web/',在Symfony4里对应的等价写法是:
// 方法一:通过Kernel对象获取项目根目录,再拼接public $publicPath = $this->get('kernel')->getProjectDir() . '/public/'; // 方法二:通过容器参数获取(更推荐,尤其是在服务中) $publicPath = $this->getParameter('kernel.project_dir') . '/public/';
这里要注意,Symfony4里getRootDir()返回的是config目录的路径,不再是Symfony3里的app目录,所以不能再用原来的../web这种写法啦。
2. 获取public下的图片目录路径
如果你的图片存在public/images/目录下,直接在public路径后面拼接即可:
// 获取图片目录的绝对路径 $imageDir = $this->getParameter('kernel.project_dir') . '/public/images/';
额外提示:生成可访问的图片URL
如果是要生成前端能直接访问的图片URL,推荐使用Symfony的Asset组件,这样能自动处理asset版本、CDN前缀等场景:
// 在控制器中(继承AbstractController的话) $imageUrl = $this->asset('/images/your-image.jpg'); // 或者手动获取Asset服务 $imageUrl = $this->get('asset')->getUrl('/images/your-image.jpg');
内容的提问来源于stack exchange,提问作者Mouna Ben Hmida
相关产品推荐
相关产品推荐

