在 Symfony 表达式语言中使用 kernel.environnement

问题描述 投票:0回答:1

我正在使用 Symfony 4.4,我只想在

dev
test
环境中授予对某些路由的访问权限。

我的路线在实体中定义(使用 Api 平台):

*          "postUserTest"={
*              "security" = "'%kernel.environment%' !== 'prod'",
*              "method"="POST",

我尝试直接转储表达式语言的结果:

// $env = prod
$env = $this->getParameter('kernel.environment');
// $result0 = '%kernel.environment%'
$result0 = $expressionLanguage->evaluate("'%kernel.environment%'");
// $result1 = false
$result1 = $expressionLanguage->evaluate("'%kernel.environment%' === 'prod'");
// $result2 = true
$result2 = $expressionLanguage->evaluate("'%kernel.environment%' !== 'prod'");

我明白

'%kernel.environment%'
没有被解析,但我如何使用环境?我确实在文档中找到了任何示例,这可能吗?

我期待这样的结果:

$result1 = $expressionLanguage->evaluate("'%kernel.environment%' === 'prod'");

在生产环境中为真,现在为假。

symfony symfony4
1个回答
0
投票

有更简单的方法来做到这一点。

例如,

  • SF>5:您可以在路由 YAML 或
    when@dev:
    /
    #[When(env: 'dev')]
    中添加一个
    @When(env: 'dev')
    部分,因为注释应该有效。
  • SF 4:将 YAML 路由文件放入
    routes/dev/
    文件夹中,如下所述:https://symfony.com/doc/4.4/quick_tour/the_architecture.html
  • SF 3:把你的路线放在
    app/config/routing_dev.yml
© www.soinside.com 2019 - 2024. All rights reserved.