【问题标题】:Stimulus controllers in subfolders not working in Symfony子文件夹中的刺激控制器在 Symfony 中不起作用
【发布时间】:2021-07-20 17:48:57
【问题描述】:

早上好。我在使用 Stimulus 控制器和命名空间时遇到问题,遵循 Stimulus 文档中指定的命名约定。

当我像这样使用我的控制器时,一切都按预期工作:

/controllers/gifts_controller.js
data-controller="gifts"

如果我以这种方式使用控制器,则没有任何效果:

/controllers/frontend/gifts_controller.js
data-controller="frontend--gifts"

Stimulus documentation 指定子文件夹中控制器的命名约定必须与第二个示例类似,但它不起作用。没有错误,就像它不存在一样。

有什么想法吗?

编辑:对不起,我写错了

【问题讨论】:

  • 请在 ``` 引用之间发布代码。见stackoverflow.com/help/how-to-ask
  • 代码在```之间。我阅读了文档,如果我做错了什么,很抱歉,但我认为这是正确的。
  • 我的意思是,不要发布图片来说明您的问题!不要发布代码、数据、错误消息等的图像...stackoverflow.com/help/how-to-ask
  • 我自己从未使用过 Stimulus。是否有与 Gifts-controller.js 关联的 Symfony GiftsController.php?在 Symfony 中,默认情况下,控制器确实需要位于 src/Controller 目录下。

标签: symfony namespaces stimulusjs


【解决方案1】:

文件名中的后缀_controller.js 是 Stimulus 用于检索目录结构中的控制器的约定。它不应包含在data-controller 属性中。

正如您分享的documentation article 中所述:

Name your controller files [identifier]_controller.js, where [identifier] corresponds
to each controller’s data-controller identifier in your HTML.

双破折号 (--) 替换命名空间(子文件夹)结构中的任何正斜杠 (/)。

在您的情况下,文件controllers/frontend/gifts_controller.js 的标识符是frontend--gifts。 因此,在 HTML 元素的 data 属性中,您应该将控制器称为 data-controller="frontend--gifts"

【讨论】:

  • 嗨!谢谢您的回答。我是按照你的方式做的,我只是看到我写的问题没有正确,当我有data-controller="frontend--gifts"时我输入了data-controller="frontend--gifts_controller.js"
猜你喜欢
  • 2012-05-11
  • 2023-01-01
  • 2022-11-18
  • 1970-01-01
  • 2013-01-08
  • 2021-02-13
  • 2022-06-29
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多