【问题标题】:Symfony Annotation InheritanceSymfony注解继承
【发布时间】:2016-08-29 10:09:20
【问题描述】:

我有一个关于 symfony 中注释继承的问题。

A类:

abstract class AController
{
  /**
   * Test action
   * @Route("/", name="test")
   * @Template("...")
   */
  public function testAction()
  {
      ...
  }
}

我的问题是,是否可以从 B 类中不仅继承函数,还继承路由注释。或者一个很好的解决方法是什么。类似的东西:

class BController extend AbstractController
{
    public function testAction(){
        return parent::testAction();
    }
}

【问题讨论】:

  • 这将如何工作?如果抽象类和几个实现的类共享相同的路由定义,symfony 应该如何知道在实际调用该路由时要调用哪个动作?
  • 但是有没有像@inheritParentAnnotation 这样的注解

标签: php symfony oop inheritance annotations


【解决方案1】:

我正在为我正在处理的项目中的管理子域寻找类似的解决方案。首先,我尝试使用您的方法并意识到它不受支持。所以我设置了更新我的配置。以下配置自动将 /src/Controller/Admin 目录中的所有路由限制为我的 admin 子域,并在所有路由名称前加上“admin_”。

# /config/routes/annotations.yaml
controllers:
    resource: ../../src/Controller/**/*
    type: annotation
    exclude: ../../src/Controller/Admin

admin:
    resource: ../../src/Controller/Admin/
    type: annotation
    host: admin.%site_name%
    name_prefix: admin_
....

这里有几点需要注意。首先,“%site_name%”是我项目中定义的参数。其次,路由配置中的 exclude 选项似乎存在一个错误,它仅在您使用 glob 模式作为资源选项时才有效。因此“../../src/Controller/**/*”。

这个问题已经很老了,但希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 2015-08-06
    • 1970-01-01
    • 2018-01-04
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多