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

How to use PHP constant in routing YAML

我正在使用 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 版本,这可以通过特定的错字来完成:

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

你不能在 Symfony 3.4 中使用。

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

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

This 是合并功能的时间。