问题描述
我使用的是 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