【问题标题】:Symfony 2 Managin not planned growthSymfony 2 Managin 没有计划增长
【发布时间】:2014-06-22 17:56:37
【问题描述】:

我在 Symfony 2 中完成了一些小项目,它们是非常简单的项目,因为我是初学者,它们只有一个 bundle,这个 bundle 管理从 1 到 3 个表的表单和数据访问。现在有人对其中一个捆绑包感兴趣,他希望我开发一些需要更多捆绑包的其他功能,并且他们应该使用相同的数据库、模板等。我有很多疑问,但是有我需要能够开始的一件事是从原始捆绑包中取出实体和可能的一些表格:

src
|__MyProject
  |___MyBundle
     |__Entity
     |__Form

我想将这些实体和一般形式作为独立文件夹,可能在MyProject 中,让我们说:

src
|__MyProject
  |__Entity (General entities)
  |__Form (general forms)
  |___MyBundle
     |__Entity
     |__Form

我不知道这是否是正确的方法,但我想我需要这样的东西。我一直在阅读一些关于最佳实践的文档,他们做了类似的事情(不完全相同),但每个开发人员都有自己的书。问题是你如何告诉 Symfony 实体不再在这里,它们在其他地方,我试图更改 namespaces 路径和 use 语句,但仅这样做是行不通的, Symfony 仍在寻找 MyBundle 中的那些实体。任何人都可以帮助我一些方法或向我指出可靠的文档吗?

【问题讨论】:

    标签: symfony entity bundle


    【解决方案1】:

    当要调用当前命名空间(vendor/bundle1/entity)之外的实体时,需要引用。 2个解决方案:

    namespace vendor\bundle2\Controller;
    
    use vendor\bundle1\Entity\MyEntity;
    

    或者

    直接以你的实体名称设置完整路径

    public function indexAction() {
    
    ...
    $entity = new vendor\bundle1\Entity\MyEntity();
    ....
    
    }
    

    PS:我不知道它是否相关,但我记得实体子目录与 Doctrine 的问题

    【讨论】:

      【解决方案2】:

      您在问题中写道,新捆绑包将使用相同的数据库、模板等。这意味着这些捆绑包是紧密耦合的。因此,您应该问自己一个问题:

      我会单独分发这些捆绑包吗?

      如果您的答案是否。 那么您应该将这两个捆绑包放在一个捆绑包中,而不是单独的捆绑包中。如果您的回答是是的。,这可能不是这种情况,那么您应该有单独的捆绑包。

      为了分离你的包,在这种情况下,你应该像这样保持它:

      src
      |__MyProject
        |___MyBaseBundle
        |   |__Entity
        |   |__...
        |___MyOtherBundle
            |__Form
            |__...
      

      在您的基础捆绑包中,您应该保留所有捆绑包共有的所有项目,在您的案例中是实体、布局和其他资源。在您的其他捆绑包中,您应该保留大多数特定于该捆绑包的物品。

      【讨论】:

      • @Chopchop 这两个答案都非常有用。这特别。 在您的基础捆绑包中,您应该保留所有捆绑包共有的所有项目,在您的案例中是实体、布局和其他资源。在您的其他捆绑包中,您应该保留大多数特定于该捆绑包的项目。我也想避免耦合,所以我认为我需要一些通用的东西,但不是全部。而且我还需要一些特殊的东西,以便将来可以分开我的捆绑包。
      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2015-07-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多