一项操作可在多个应用程序中重复使用

发布于 2024-11-04 00:26:00 字数 123 浏览 5 评论 0原文

我有一个 symfony 应用程序,它有两个不同的应用程序(前端、后端),但有一个共同的操作。现在我已经在两个应用程序中复制了它的代码,但我根本不喜欢这样。

有没有办法在多个 symfony 应用程序中重用一个动作?

I have a symfony application with two different applications (frontend, backend) but there is one action in common. Now I have duplicated its code in both apps but I don't like that at all.

Is there a way to reuse an action in multiple symfony applications?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千纸鹤 2024-11-11 00:26:00

最简单的方法是使用共享方法/动作在 lib 中创建一个动作基类。然后需要使用此功能的模块只需扩展该基类即可,而不是sfActions

您也可以只在 sfComponent 的 method_not_found 上使用事件侦听器。但是,如果该方法是实际操作,则可能无法按预期工作(并且它也可以在所有模块和所有组件中使用,而无需某些特殊的检测逻辑)。

最复杂的方法是制作一个插件。当然,这需要使适用于任何模型的逻辑动态化,以便可以对其进行配置或将模式的相关部分隔离到插件的模式。

The easiest way would be to make an actions base class in lib with the shared methods/actions. Then the modules that need to use this functionality can just extend that base class instead of sfActions.

You could also probably just use an event listener on method_not_found of sfComponent. But that may not work as expected if the method is an actual action (and it would also be available in all modules and all components without some special detection logic).

The most complicated way would be to make a Plugin. Of course that would require making the logic that works with any models dynamic so it can be configured or isolating the relevant parts of the schema to the plugin's schema.

高冷爸爸 2024-11-11 00:26:00

还有两个选项:

1)如果您使用的是 Linux,则创建指向 actions.class.php 甚至整个模块的符号链接(如果您共享相同的模板)。

cd apps/backend/modules/name
ln -s ../../frontend/modules/name name

2)如果您在开发方面还没有走得太远,请重构您的项目,使其只有一个应用程序(我最喜欢的)。

Two more options:

1) if your are on Linux, make a symlink to your actions.class.php or even whole module, if you share the same templates.

cd apps/backend/modules/name
ln -s ../../frontend/modules/name name

2) if you have not gone too far in development, re-factor your project to have only ONE application (my favourite).

森末i 2024-11-11 00:26:00

如果您想共享一个模块(以及它的操作),正确的方法是创建一个插件。

If you want to share a module (and hence also it's actions), the proper way is to create a plugin.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文