首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Controller中获取资源的完整url?

如何在Controller中获取资源的完整url?
EN

Stack Overflow用户
提问于 2012-01-11 06:10:07
回答 12查看 103.7K关注 0票数 50

我需要在控制器中生成一些JSON内容,并且需要获取位于此处的上传图像的完整URL:/web/uploads/myimage.jpg

我怎样才能得到它的完整url?

http://www.mywebsite.com/uploads/myimage.jpg

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-01-11 22:44:32

您可以从request对象生成url:

代码语言:javascript
复制
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();

你可以做一个twig扩展,它切断了路径的/web部分,并使用请求来生成基本url。

有关更可靠的实现,请参阅Symfony\Component\Routing\Generator\UrlGenerator::doGenerate

此外,Twig还可以访问来自app.request的请求。

票数 57
EN

Stack Overflow用户

发布于 2013-05-11 23:38:39

您可以使用templating.helper.assets服务。

首先定义您的assets base URL

代码语言:javascript
复制
# app/config/config.yml
framework:
    templating:
        assets_base_url: "http://www.mywebsite.com/"

然后只需从控制器、命令或您所在的任何位置调用服务:

代码语言:javascript
复制
<?php

// src/Acme/Bundle/DemoBundle/Controller/DemoController.php

namespace Acme\Bundle\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DemoController extends Controller
{
    public function indexAction()
    {
        $myAssetUrl = $this
            ->get('templating.helper.assets')
            ->getUrl('bundles/acmedemo/js/main.js', $packageName = null)
        ;

        // $myAssetUrl is "http://www.mywebsite.com/bundles/acmedemo/js/main.js"

        return array();
    }
}
票数 29
EN

Stack Overflow用户

发布于 2012-06-14 23:16:38

如果您想从twig模板中获取此url,请使用:

代码语言:javascript
复制
{{ app.request.uriForPath('/uploads/myimage.jpg') }}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8811251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档