微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在路由 YAML 中使用 PHP 常量

如何解决如何在路由 YAML 中使用 PHP 常量

我使用的是 Symfony 3.4

我设法让 PHP 常量为服务工作(如文档中所述)。但我不知道如何让它在路由文件中工作。这是我目前所拥有的。

实体:

namespace CompanyName\AppBundle\Entity\SomeDirectory;

class MyEntity
{
    public const STATUS__CREATED = 1;
}

routing.yml:

view_my_entity_with_status_created:
  path:       /created/
  defaults:
    _controller: "AppBundle:SomeOtherDirectory/Something:index"
    status: !PHP/const CompanyName\AppBundle\Entity\SomeDirectory\MyEntity::STATUS__CREATED

SomethingController

public function indexAction(?int $status = null): Response
{
 // ...
}

据我所知,!PHP/const 被忽略,因为状态始终为空。

解决方法

你不能在 Symfony 3.4 中。

路由 YAML 配置文件中使用 !php/const 直到 Symfony 4.1 才被启用。

虽然该功能在 3.2 中被添加到 YamlFileLoader 中,但默认情况下仅为依赖注入组件启用,而不为路由组件启用。

This 是功能合并的时间。

,

根据您的 symfony 版本,这可以通过特定的错字来完成:

https://symfony.com/blog/new-in-symfony-3-2-php-constants-in-yaml-files

在 3.2 之前是不可能的 从 3.2 到 3.4

arguments:
            - '@app.other_service'
            - !php/const:AppBundle\Entity\BlogPost::MUM_ITEMS
            - !php/const:Symfony\Component\HttpKernel\Kernel::VERSION

3.4 之后:

arguments:
            - '@app.other_service'
            - !php/const AppBundle\Entity\BlogPost::MUM_ITEMS
            - !php/const Symfony\Component\HttpKernel\Kernel::VERSION

对于您的路由文件:

# config/routes.yaml
blog_list:
    path:       /blog/{page}
    controller: AppBundle:SomeOtherDirectory/Something:index
    defaults:
        status: !php/const CompanyName\AppBundle\Entity\SomeDirectory\MyEntity::STATUS__CREATED

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?