Symfony 中的代码放置(服务/存储库)

问题描述 投票:0回答:2

使用 Symfony 6,我有一个实体文章,其中有 Cat(egories)。 我想得到这样的猫的网址:

        {% for item in data.body.article.cats %}
          <li><a href="{{ item.url }}">{{ item.cat }}</a></li>
        {% endfor %}

但是 Cat->url 不是数据库中的字段,它是生成的值。

我的问题:

  • 我认为在实体猫中创建函数 getURL() 是不对的,因为它不是数据库字段。所以我应该将该函数放在 CatService.php 或 CatRepository.php 中。它在哪个文件中? (什么时候使用Service,什么时候使用Repository?)
  • 如何从 twig 文件中调用该函数?
  • 如何在该函数中使用当前的 Cat 对象?

谢谢!

谷歌搜索,但我无法真正找到服务和存储库之间的区别。

symfony twig
2个回答
-1
投票

-1
投票

服务与存储库

为了简单起见:

  • 服务用于业务操作等逻辑动作
  • 存储库用于存储和调用数据库操作(创建实体、获取实体、自定义查询等)

服务可以调用存储库中的方法。

从 Twig 调用函数

如果您想在实体对象中调用函数:

{{ item.MyFunction() }}

您还可以创建自定义 Twig Extension 来实现更复杂的行为。

在该函数中使用 Cat 对象

如果该功能位于您的实体内:

{{ item.MyFunction(item.cat) }}

使用自定义树枝扩展:
{{ item.cat|twig_extension }}
,其中 twig_extension 是您在上一节中开发的扩展。

请注意,您没有共享您的实体类,因此您需要将我的示例应用于您的实体以使其正常工作!

© www.soinside.com 2019 - 2024. All rights reserved.