如何从symfony 2控制台访问twig中的基本URL?

时间:2013-07-26 06:55:12

标签: php symfony twig

我正在将我在Kohana的网站逐渐移植到Symfony 2。现在我在Symfony2中编写后端命令,例如cron发送电子邮件通知。

如何在树枝中访问基本网址。我可以进行一些配置,以便从控制台和http请求访问twig中的URL是一样的吗?

我已经提到了这个,

http://symfony.com/doc/current/cookbook/console/sending_emails.html

http://symfony.com/doc/current/cookbook/templating/global_variables.html

这里给出了如何配置它,但没有提到如何访问它,我假设我必须使用{{router.request_context.host}}。

但我的问题是,控制台和HTTP之间没有任何方法可以保持一致吗?

e.g。 {{url}}?

3 个答案:

答案 0 :(得分:4)

在parameters.yml,

中添加以下设置
router.request_context.scheme: http
router.request_context.host: domain.com
base_url: '%router.request_context.scheme%://%router.request_context.host%/'

和控制台命令控制器内部可以访问,

$host =  $this->getContainer()->get('router')->getContext()->getHost();
$scheme =  $this->getContainer()->get('router')->getContext()->getScheme();
$baseURL = $this->getContainer()->getParameter('base_url');             

答案 1 :(得分:3)

首先,您必须通过将以下行添加到/app/config/routing.yml来设置路径中的url(您将其称为base_url):

base_url:
    pattern:  /

之后,您必须按照Symfony cookbook中的说明设置router.request_context参数。

现在一切都已设置好,您可以像在网页中一样使用Twig中相同的网址功能:

{{ url('base_url') }}

答案 2 :(得分:3)

这对我有用。

在config.yml中:

twig:
   globals:
       base_url: "http://www.example.com/"

在树枝模板中:

{{ base_url }}