一项操作可在多个应用程序中重复使用
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最简单的方法是使用共享方法/动作在
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 ofsfActions
.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.
还有两个选项:
1)如果您使用的是 Linux,则创建指向 actions.class.php 甚至整个模块的符号链接(如果您共享相同的模板)。
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.
2) if you have not gone too far in development, re-factor your project to have only ONE application (my favourite).
如果您想共享一个模块(以及它的操作),正确的方法是创建一个插件。
If you want to share a module (and hence also it's actions), the proper way is to create a plugin.