【问题标题】:Sulu: custom entity type - FOS rest api routes are missingSulu:自定义实体类型 - 缺少 FOS 其余 api 路由
【发布时间】:2021-05-10 13:04:38
【问题描述】:

我按照 Sulu 文档将自定义实体类型添加到 Sulu 并在点:

https://docs.sulu.io/en/2.2/book/extend-admin.html#configure-resources

打电话时:bin/adminconsole debug:router | grep event

我应该得到完整的rest api的各种路线。

但是,当我这样称呼它时,我只会列出一条路线:

app.get_events                                  GET      ANY      ANY    /admin/api/events.{_format} 

那里的文档说“如果您也已经创建了其他操作,..”,但管理员 EventController 类再次具有该注释:

/**
 * @RouteResource("event")
 */

.. 所以我不确定我应该为每个休息操作(GET、PUT、DELETE ...)手动创建一个方法,还是应该自动创建它们?如果它们应该是自动创建的,那为什么我看不到这些路线?

【问题讨论】:

    标签: routes fosrestbundle sulu


    【解决方案1】:

    没有任何操作是自动生成的。如果您遵循有关扩展管理员的文档,您可能只实现了cgetAction() 方法,对吧?因此只注册了app.get_events 路由。一旦你实施例如一条postAction(),一条app.post_event 路线将为您注册。但是您始终必须自己为您的自定义实体实现 crud 功能,Sulu 不能为您执行此操作,因为这完全取决于您,您的自定义实体如何存储(也可以作为文件存储在文件系统中或作为elasticsearch中的文档)

    通常,查看 Sulu 的内部包(SuluTagBundle 非常简单)或 github 上的其他资源(例如 Sulu WorkshopSulu Demo)会很有帮助,看看这些东西是如何工作的。

    【讨论】:

    • 谢谢。手动添加它们,它们现在显示。唯一的问题是 put 动作。如果我在您的示例中定义了类似“putAction(Request $request, int $id): Response”的方法 id 参数在路由中丢失。如果我切换参数顺序并首先放置 $id 就会出现。这是正确的方法吗?
    • 不幸的是,我无法重现这种行为。将$id 参数放在第二位对我来说完全没问题。您可以尝试使用rm -rf var/cache/* 清除缓存,有时这会有所帮助
    • 是的,Sulu 教程中严重缺少这一步,也给我们带来了很多麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多