一个动作在多个应用程序中重用

时间:2011-04-30 22:25:50

标签: symfony1 code-duplication

我有一个带有两个不同应用程序(前端,后端)的symfony应用程序,但有一个共同的操作。现在我在两个应用程序中都重复了它的代码,但我完全不喜欢它。

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

3 个答案:

答案 0 :(得分:6)

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

您也可以在sfComponent的method_not_found上使用事件监听器。但是,如果该方法是一个实际操作,那么这可能无法正常工作(并且它也可用于所有模块和没有一些特殊检测逻辑的所有组件)。

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

答案 1 :(得分:1)

还有两个选择:

1)如果您使用的是Linux,请为您的actions.class.php甚至整个模块制作符号链接,如果您共享相同的模板。

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

2)如果您在开发过程中没有走得太远,请将您的项目重新设计为只有一个应用程序(我最喜欢的)。

答案 2 :(得分:0)

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